場景:試圖從一個數據庫提取信息並將信息從另一個數據庫重新排列。 DB A有一些我想獲得的數據。我想將它存儲在DB B上,結構稍有不同。使用ObjectContext和DbContext
DB A我使用EDMX數據庫生成的模型,因此它使用了ObjectContext的派生。 DB B我想成爲代碼生成。所以我使用代碼/模型第一種方法,通過包管理器安裝EntityFramework 4.1。所以DB B使用的DbContext衍生
當我試圖從數據庫A到數據庫B檢查的商店信息說:
試驗方法RoutIT.Irma.Import.Service.Test.ImportIrma2ProductTests.ImportProducts拋出異常:系統.ArgumentException:找不到'DB A的EDMX模型中的某個實體'的概念模型類型
實際上,它在向數據庫B的Derived DbContext的DbSet屬性添加DB B實體時執行此操作。因此代碼等
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
foreach (FirstPVC pvc in pvcs)
{
this._irmaImport.FirstPVCs.Add(pvc); <--
this._irmaImport.SaveChanges();
}
scope.Complete();
}
}
它發生在高於標記由箭頭在代碼點(「< - 」)
FirstPVC是DB乙屬性尚未在箭頭的點它抱怨沒有一個屬於數據庫B的上下文的實體的概念模型。
這很奇怪,因爲我嘗試將DB B實體存儲到DB B上下文中。爲什麼它應該關注數據庫A的實體。
所有上下文都包含在同一個項目中。但DB B的Derived DbContext只知道它自己的DbSet屬性,突然嘗試向DbSet添加內容時,它給了我上面粗體的錯誤。
有人知道爲什麼會發生這種情況? DbContext爲什麼要關心另一個上下文的實體,特別是ObjectContext派生類的實體。
Perhapse它有用要注意它的抱怨實體看起來有點像這樣
[EdmEntityTypeAttribute(NamespaceName="Irma2Model", Name="AccessProvider")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AccessProvider : EntityObject
{
/*****...... ******/
}
我想我有同樣的問題,我有兩個DB-first EDMX映射來自同一個DB的不同表,現在我已經將其中一個切換到了較新的EF4.1 DbContext/POCO模型,但是當我嘗試使用後者時,在另一個EDMX中得到關於一個表格丟失模型的錯誤。也許這個答案是相關的?:http://stackoverflow.com/questions/3521497/how-does-ms-entity-framework-map-from-the-conceptual-model-to-clr-types。注意我認爲你的文章中有一個錯字「它抱怨沒有屬於DB B上下文的實體的概念模型」,你的意思是DB A是對的? – zeroid
http://stackoverflow.com/questions/6899567/mixing-model-first-and-code-first這也是。沒有回答,雖然 – zeroid