【问题标题】:Linq To SQL Attach/Refresh Entity ObjectLinq To SQL 附加/刷新实体对象
【发布时间】:2009-05-22 14:50:44
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 只是出于好奇,空类型是“GUID”吗?

标签: c# .net linq linq-to-sql


【解决方案1】:

你试过了吗

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

提交更改后,context 是您的 linq2sql 数据上下文,faculty 是您要刷新的实体?

【讨论】:

  • 我注意到,如果您在绑定源的 CurrentChanged 事件之外刷新实体,还需要执行 yourBindingSource.ResetCurrentItem();
【解决方案2】:

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

【讨论】:

  • 我正在维护一些使用 attach 方法的代码,但我不太清楚为什么它不是按照您的建议编写的。
  • 我认为他指的是在表中创建一个新条目。
  • 哦!现在我想起来了。这是因为有一个时间戳字段称为版本。执行您的建议会导致此错误:“Faculty”类型对象的成员“版本”的值已更改。由数据库计算或生成的成员不能更改。
  • 日期是怎么输入的?它是默认的吗?我很困惑为什么您无法更改数据库中的时间戳。
猜你喜欢
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多