2009-04-20 110 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 - 替換原件。這將允許您以數據庫往返的代價來適當插入/更新/不做任何事情。