0
添加一個實體我試圖合併使用兩個相同的架構數據庫之間的數據的LINQ到SQL:從另一個DataContex在LINQ
List<Contact> contacts = (from c in oldDb.Contact
select c).ToList();
contacts.ForEach(c => c.CreatedByID = 0);
newDb.Contact.InsertAllOnSubmit(contacts);
newDb.SubmitChanges();
僅僅拋出一個「嘗試已經取得了附加或添加不是新的實體,可能是從另一個DataContext加載的,不支持。「例外。
除執行以下操作,還能怎麼這個被一般做(在合理的執行時間):
List<Contact> contacts = (from c in oldDb.Contact
select c).ToList();
contacts.ForEach(c => { c.CreatedByID = 0; newDb.Contact.InsertAllOnSubmit(contacts); });
newDb.SubmitChanges();
連同:
private t GetNewObject<t>(t oldObj)
{
t newObj = (t)System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(typeof(t).Name);
PropertyInfo[] props = typeof(t).GetProperties();
foreach (PropertyInfo _prop in props)
{
_prop.SetValue(newObj, _prop.GetValue(oldObj, null), null);
}
return newObj;
}
的問題是這種方法是相當慢時只有11個對象和75個屬性,我需要爲數十萬個對象執行此操作,所以我可以在此處獲得的任何性能提升都會大大減少總體運行時間。
基本上,是否有任何Detach或類似的調用我可以做,將斷開舊的DataContext的現有對象,並將它們連接到新的DataContext。無需爲每個返回的行創建所有新對象。
有沒有辦法做到這一般地,看到我的問題在這裏http://stackoverflow.com/questions/3952160/setting-entityreft-properties-to-default-using-reflection – Seph 2010-10-17 05:32:03