2014-10-17 63 views
0

(使用:Visual Studio 2010中,SQL Server 2012中,实体框架4.0,MVC3 Web应用程序)问题对象

我表一个一对多和多对多的一对多关系,我用(数据库优先)自动生成模型类,这意味着我有从EntityObject继承的对象和继承自ObjectContext的基类。

我遇到了(插入,更新,删除)对象的问题。

例如创建对象时:我有2个表(AreaCell)和中间表(CellArea)之间的多对多的关系,以及我要添加其被连接到许多新的Cell对象区,所以我做了下面的代码:

Cell _cell = new Cell() 

foreach (Area ar in current_areas) 
{      
    var ca = new CellArea(); 
    //ca attributes 
    _cell.CellAreas.Add(ca); 
} 

db.SaveChanges(); 

db.Cells.AddObject(_cell); 

db.SaveChanges(); 

我尝试过其他的代码片段,其中没有工作,我总是得到IEntityChangeTracker和其他类似例外。

什么是管理这种情况的正确方法?

+0

您需要包含更多关于您正在获取的特定例外的信息。 IEntityChangeTracker是一个接口,不是一个例外。如果您需要帮助,您需要提供足够的信息,以便可以确定问题所在。 – user469104 2014-10-17 13:31:12

+0

我在不同的操作有很多例外,所以我认为我是以错误的方式处理EF,在上面的例子中,当只有一个区域添加时,我得到“InvalidOperationException:一个实体对象不能被多个IEntityChangeTracker实例引用。 “ 添加_cell对象的例外情况。 当添加了多个区域时,我也会得到“InvalidOperationException:无法定义两个对象之间的关系,因为它们连接到不同的ObjectContext对象。”在添加区域行中是例外。 – 2014-10-17 13:47:52

回答

0

当存在可交互关系时,EF应创建所谓的导航属性。在执行初始查询时,您可以选择是否加载这些属性。特别是EF有一个名为Include的关键字,允许您随意填充这些其他属性。如果包含所有其他日期并做出任何更改,则只需调用SaveChanges方法,并将原始表格数据和所有导航属性数据一次性保存。

Google“EF Include”