2009-04-20 72 views
0

如果我将我的域对象映射到linq实体,现在我将无法在保存域对象时跟踪更改吗?因此,对于我希望创建的模型中的任何更改,一旦将对象映射到linq实体以提交给db,由于它首先通过映射,所有对象值将由linq提交给db。或者,这里的对象跟踪还会被利用吗?映射Linq实体和​​域对象和对象跟踪

回答

1

取决于您使用的O/R映射器。你指的是实体框架,它不会在实体内部做任何更改跟踪,因此当你重新连接一个以前从db中获取的实体(因此它知道它不是新的)时,它需要你的帮助。

+0

linq to sql有跟踪。但是,当我将域映射回实体时,它认为即使不是这样,也会改变一切。如何告诉实体它不是真正的变化,反之亦然? – zsharp 2009-04-21 18:37:37

1

以下是关于多层环境中CRUD操作的article from microsoft(与您的域映射场景类似的问题)。

查看更新 - 使用完整实体来完成自己的更改跟踪。

还有另一种技术,您将实体附加为未修改的,然后.Refresh()与Keep Current Values - 替换原件。这将允许您以数据库往返的代价来适当插入/更新/不做任何事情。