实体框架(两个对象之间的关系无法界定)

我想在ASP.NET的网页执行以下代码:

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对象。

没有人有任何想法,为什么会出现这种情况,如何解决这个问题呢?

--------------解决方案-------------

试着改变你的对象初始化先装上后对象,然后创建关系。

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();

如果你正在使用的持久性识别类,他们需要了解对方可以创建关系之前。 这意味着你要么需要建立对象之前分离的孩子,然后将其附加的所有儿童第一,或者像上面,先装上新的岗位。 不知道什么youre addtoposts回购电话是干什么的,但应该工作提供了未运行前的对象是有效的一个保存更改。

编辑:道歉。 我没有注意到正在添加的用户对象。 您将需要或者重新加载用户使用当前上下文或从以往的情况下分离用户并将其附加到当前之一。

其中一个可能的问题是uUser 。 我看不出它来自哪里,这的确可能是可能u来自不同的背景。

分类:C# 时间:2015-03-15 人气:0
本文关键词: 框架,实体外键关系
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.095 (s). 10 q(s)