2011-10-05 310 views
0

我正在使用VS2010 EF4和我有以下代码:实体框架:ObjectSet.AddObject不添加实体?

MyEntity entity = null; 
entity = MyEntity.CreateMyEntity(0); 
context.MyEntities.AddObject(entity); 
context.AcceptAllChanges(); 
context.SaveChanges(); 

的问题是,ADDOBJECT()不加入的对象添加到集合,我只是想不通为什么。当我单步执行代码时会发生什么,它会得到第一个属性“CityId”,它当然是null,然后它似乎只是从那里返回......就像它有一个与该属性为空的问题。我的数据库(MSSQL)中唯一的非空字段是Id列,它是一个标识列...我很困惑。请帮忙!

在此先感谢!

马特

+0

什么是'MyEntity.CreateMyEntity(0);'的代码吗?我记得当我使用POCO实体时并没有使用context.CreateObject ()方法来创建实体时,我遇到了一些问题。此外,请检查VS中的堆栈窗口是否有可疑的EF方法调用 - 这可以让您了解发生了什么。再说一次 - 如果EF配置为POCO/Code-First,而MyEntity.CreateMyEntity()方法做的是什么。 – Jefim

+0

谢谢你的回复,杰夫姆。 MyEntity.CreateMyEntity()方法实际上向您显示需要填充哪些属性(db中的NOT NULL)。 – Matt

回答

1

您不应该调用接受所有更改方法。

+0

谢谢阿卡什。我无法相信。 AcceptAllChanges()究竟做了什么?该文档说:“接受对对象上下文中的对象所做的所有更改。”...在什么情况下我会调用此方法? – Matt

+0

感染它应该永远不会被调用,因为当EF将更改正确保存到数据库时,EF会调用它。如果你正试图实现你自己的与数据库通信的方式,那么你应该使用它。 –