2009-12-21 113 views
3

我從Silverlight返回一個List(自己的類)到一個服務,在這個列表中存在具有更新值和全新實體的舊實體,如何保存這個使用實體框架回到數據庫?使用實體框架添加/更新實體列表

使用cEnts.CardItems.AddObject顯然會給我重複。

回答

3

您想使用Attach()而不是AddObject()。

附加將取出您的斷開對象,並讓容器知道考慮更新。沒有PrimaryKey的新對象將被添加。

+0

下面是一個代碼示例:http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx – 2009-12-22 13:31:41

+0

它不適用於新實體 – Dani 2012-04-09 15:19:42

1

如果您使用相同的實體上下文進行選擇和更新/插入,則必須調用AddTo ...()方法將新實體和ApplyPropertyChanges插入到已更改的實體中。

如果您使用不同的上下文,問題會更復雜,因爲您必須從一個上下文中分離實體並將它們附加到另一個上下文中。一旦分離的實體失去其更改的狀態,並且必須明確指定哪些屬性已更改(有關詳細信息,請檢查此項:http://www.abadjimarinov.net/blog/2009/12/13/AttachAlreadyChangedObjectToADataContextInEntityFramework.xhtml)。