假设常规控制器和ApiController的上下文的ProxyCreationEnabled
和LazyLoadingEnabled
分别设置为true
和false
。当通过EntityState.Modified进行更新时,EF做了什么?
有一种方法可以更新EF中的实体,将其状态设置为EntityState.Modified
。
_context.Entry(newEntity).State = EntityState.Modified;
_context.SaveChanges();
当实体被装载在Controller
一切正常。至于ApiController
我的导航属性为null
- 因为禁用该上下文实例的代理。
如果我更改任何属性或将其状态设置为Modified
并保存更改会发生什么情况? 实体框架将与那些null
导航属性做什么?
我确实有外键关联,所以如果我通过Entity.State = EntityState = Modified'更新,导航属性**将被分配给** null。有没有办法实现这一点,任何指针将不胜感激,谢谢! – Esteban
@Esteban:“*有没有办法实现这个*”:你的意思是说你实际上**希望**参考在数据库中被清除掉了吗?在这种情况下,对于外键关联,你应该有一个可为空的外键属性(如'int?')。如果此属性为null,并且您将状态设置为Modified,则null将写入DB中。 – Slauma
不,我不希望我的导航属性设置为空。这就是我需要阅读的:'你应该有一个可为空的外键属性(如int?)。如果此属性为空,并且您将状态设置为Modified,则空值将写入数据库。“非常感谢您的时间! – Esteban