首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架(不能定义两个对象之间的关系)

实体框架(不能定义两个对象之间的关系)
EN

Stack Overflow用户
提问于 2011-12-19 18:54:56
回答 2查看 2.9K关注 0票数 1

我试图在ASP .Net网页中执行以下代码:

代码语言:javascript
复制
  using (var wpe = new CL40215_wpnEntities())
                {
                int cid = Convert.ToInt32(cmbCity.SelectedItem.Value);
                int catid = Convert.ToInt32(cmbCategory.SelectedValue);

             Post p = new Post
             {
                 title = txtTitle.Text,
                 description = txtDescription.Text,
                 User = u,
                 City = wpe.Cities.First(c => c.id == cid),
                 initialprice = 0,
                 finalprice = 10,
                 Category = wpe.Categories.First(c => c.id == catid),
                 postdate = DateTime.Now,
                 closedate = DateTime.Now.AddDays(Convert.ToInt32(cmbDays.SelectedValue)),
                currentprice = 1
             };
                wpe.AddToPosts(p);
                wpe.SaveChanges();
 }

但是,我得到以下错误:

不能定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象上。

有没有人知道为什么会发生这种情况,以及如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-19 19:04:44

尝试更改您的对象初始化,以便首先附加post对象,然后创建关系。

代码语言:javascript
复制
    var category = wpe.Categories.First(c => c.id == catid);
    var city = wpe.Cities.First(c => c.id == cid);
    var user = wpe.Users.First(newU => newU.Id == u.Id);
    Post p = new Post
    {
        title = txtTitle.Text,
        description = txtDescription.Text,
        initialprice = 0,
        finalprice = 10,
        postdate = DateTime.Now,
        closedate = DateTime.Now.AddDays(Convert.ToInt32(cmbDays.SelectedValue)),
        currentprice = 1
    };
    wpe.AddToPosts(p);
    p.City = city;
    p.Category = category;
    p.User = user;

    wpe.SaveChanges();

如果您使用的是持久性感知类,则在创建关系之前,它们需要了解彼此。这意味着您需要在构建对象之前先分离这些子对象,然后先将它们全部附加到子对象中,或者,如前所述,先附加新的post。不确定您是addtoposts调用正在做什么,但是如果在对象有效之前不运行保存更改,那么这应该可以工作。

编辑:道歉。我没有注意到用户对象正在被添加。您需要用当前上下文重新加载用户,或者将用户从以前的上下文中分离出来,并将其附加到当前上下文中。

票数 1
EN

Stack Overflow用户

发布于 2011-12-19 19:06:44

其中一个可能的问题是u引用User。我不知道它是从哪里来的,而且u可能来自不同的上下文。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8566006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档