2009-10-16 271 views
2

我在LINQ to SQL dbml文件中有兩個表。我試圖讓提交到上下文中的所有變化,我可以用LINQ to SQL context.GetChanges

var myOtherContext; 
var changes = context.GetChangeSet(); 

foreach (var change in changes) 
{   
    Type t = change.GetType(); 
    if (change is Product) 
    { 
     myOtherContext.GetTable<Product>().InsertOnSubmit((Product) change); 
    } 
    if (change is Supplier) 
    { 
     myOtherContext.GetTable<Supplier>().InsertOnSubmit((Supplier)change); 
    } 
} 

基本上,我認爲複製發生在一個上下文到其他上下文(myOtherContext)的所有更改得到。我不想使用if語句來檢查更改的類型。有什麼我可以寫的方式:

myOtherContext.GetTable<typeof(change)>().InsertOnSubmit((typeof(change) change); 

您的幫助將不勝感激。

問候, 成員Parminder

+0

是否LINQ2SQL甚至允許從一個上下文添加實體將被添加到另一個? – leppie 2009-10-16 06:12:46

回答

2

如何使用非通用版本:

foreach (var change in changes.Inserts) // note inserts 
{   
    myOtherContext.GetTable(change.GetType()).InsertOnSubmit(change); 
} 
+0

除了不適用於派生類型:) – leppie 2009-10-16 06:10:05

+0

工作就像魅力。非常感謝。 – Parminder 2009-10-16 10:23:04