问题 Linq To SQL附加/刷新实体对象


在Linq To Sql中,在更新我的一个实体Faculty时,我正在创建一个Faculty对象的新实例,然后初始化 一些 具有用户提供的值的属性。

如果我将这个新对象附加到实体集并提交更改,那么我没有设置的属性将采用它们所属的任何数据类型的默认值。

如何刷新新对象,以便已设置的属性保持其值和未设置的属性从数据库中获取值?

谢谢


2502
2018-05-22 14:50


起源

只是出于好奇,是空类型“GUID”? - vidalsasoon
不,他们是整数 - Ronnie Overby


答案:


你试过了吗

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

提交后更改在哪里 context 是你的linq2sql datacontext和 faculty 是您要刷新的实体?


15
2018-06-24 16:02



我注意到它也需要做 yourBindingSource.ResetCurrentItem(); 如果你正在刷新外面的实体 CurrentChanged 绑定源的事件。 - Dor


如何从数据库中检索对象,然后更改适当的值,然后提交更新?


0
2018-05-22 14:54



我正在维护一些使用attach方法的代码,我不太清楚为什么不写你做的建议开始。 - Ronnie Overby
我认为他指的是在表格中创建一个新条目。 - vidalsasoon
哦!现在我想起了。这是因为有一个名为version的时间戳字段。执行您的建议会导致此错误:“Faculty”类型的对象的成员“版本”的值已更改。无法更改由数据库计算或生成的成员。 - Ronnie Overby
日期如何?这是默认的吗?我很困惑为什么你不能改变数据库中的时间戳。 - CSharpAtl