Csharp/C#教程:为什么我的EF4.1关系在赋值空值时没有被设置为null?分享


为什么我的EF4.1关系在赋值空值时没有被设置为null?

在我的系统中,我有任务,可以选择分配给联系人。 所以在我的业务逻辑中,我有以下代码:

if (_contactChanged) { task.Contact = contact; } 

如果未指定联系人,则contact变量为null。 当我提交更改时,这应该会使联系人关系无效,但是我注意到99%的时间没有发生这种情况(我已经看到它发生过一次,但是在经过一遍又一遍这段代码之后并不是一贯的)。

当我调试时,我已经validation_contactChangedtrue并且内部代码没有被命中。 但是,在我过去task.Contact = contact;之后。 task.Contact = contact; 我注意到,当contact是null时, task.Contact是类型

 {System.Data.Entity.DynamicProxies .Contact_4DF70AA1AA8A6A94E9377F65D7B1DD3A837851FD3442862716FA7E966FFCBAB9} 

并且仍然有以前的数据绑定它。

为什么代理没有设置为null,我怎样才能让它正常工作?

哇。 好问题。 我能够确认/重现这一点, 即使指示对象不是动态代理t.Contact = null; 不起作用!

我到目前为止最好的答案是说:

  context.Entry(task).Reference(t => t.Contact).CurrentValue = null; 

我真的希望有比这更好的方法,因为这是一些非常不方便的语法。

更新:

这有效:

  var task = context.Tasks .Where(...your condition here...) .Include(t => t.Contact) .First(); task.Contact = null; 

要么,

如果您在模型中定义了外键ID(如在可以为空的ContactId中),则这将变得更加容易。

上述就是C#学习教程:为什么我的EF4.1关系在赋值空值时没有被设置为null?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1005868.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐