ADO.net实体框架:仅更新分离实体上的certian属性

时间:2009-07-22 20:59:35

标签: .net vb.net entity-framework ado.net

我想更新实体而不先从数据库加载实体。

我已经完成了这项工作,但只能了解所有实体属性,然后使用“attachto”方法。

我的问题是我不希望我的应用需要记住所有属性。例如:

 Dim customerEntitiy As New shopper
 customerEntitiy.shopper_id = CustomerData.CustomerID
 customerEntitiy.market_code = CustomerData.MarketSector
 customerEntitiy.email = CustomerData.Email
 customerEntitiy.modified = DateTime.Now
 context.AttachTo("shopper", customerEntitiy)
 context.SaveChanges()

该实体上还有一个“已创建”字段。我不希望通过我的n层应用程序一直传递这个“创建”日期。保存到数据库时,如何“不更新”该字段?谢谢! 保罗

3 个答案:

答案 0 :(得分:3)

我想通了,基本上你使用存根而不是附加它,然后只设置你想要更新的道具。实体框架只会更新已更改的内容。

Dim customerEntitiy As New commerce_shopper
customerEntitiy.shopper_id = CustomerData.CustomerID 'this is the primary key'
context.AttachTo("commerce_shopper", customerEntitiy)
customerEntitiy.market_code = CustomerData.MarketSector
customerEntitiy.email = CustomerData.Email
customerEntitiy.modified = DateTime.Now
context.SaveChanges()

这会绕过“已创建”的日期字段。

答案 1 :(得分:0)

我不认为可以使用保存更改来更新实体,而无需先从数据库中加载它。您拥有的代码将生成插入语句,而不是更新。

您可以使用仅更新特定文件的存储过程来完成您尝试执行的操作。

答案 2 :(得分:0)