【发布时间】:2009-04-21 19:40:19
【问题描述】:
如果我将我的域对象映射到 linq 实体,我现在是否无法在保存我的域对象时跟踪更改?因此,对于我希望对模型进行的任何更改,一旦我将对象映射到 linq 实体以提交给 db,所有对象值都将由 linq 提交给 db,因为它首先经过映射?还是这里的物体追踪还能用?
【问题讨论】:
标签: linq linq-to-sql design-patterns domain-driven-design
如果我将我的域对象映射到 linq 实体,我现在是否无法在保存我的域对象时跟踪更改?因此,对于我希望对模型进行的任何更改,一旦我将对象映射到 linq 实体以提交给 db,所有对象值都将由 linq 提交给 db,因为它首先经过映射?还是这里的物体追踪还能用?
【问题讨论】:
标签: linq linq-to-sql design-patterns domain-driven-design
取决于您使用的 O/R 映射器。您指的是实体框架,它不会在实体内部进行任何更改跟踪,因此当您重新附加以前从数据库中获取的实体时,它需要您的帮助(因此它知道它不是新的)。
【讨论】:
这是一个article from microsoft,关于多层环境中的 CRUD 操作(与您的域映射场景类似的问题)。
查看更新 - 使用完整实体了解自己进行更改跟踪的方法。
还有另一种技术,您将实体附加为未修改,然后使用 Keep Current Values 进行 .Refresh() - 替换原始实体。这将允许您以数据库往返为代价适当地插入/更新/不执行任何操作。
【讨论】: