我有麻煩得到這個權利...EntityFramework - 核心項目與Web項目與共享實體?
我有一個通用的功能集合,包括例如標記「核心」項目。標記包括一組實體,其中一些包括Tag
和ObjectTag
。
他們基本上是這樣的:
Tag (uniqueidentifier TagId, nvarchar(max) Tag)
ObjectTag (uniqueidentifier TagId, uniqueidentifier ObjectId)
我的「芯」項目還包含DbContext
的數據模型稱爲CoreEntities
。因此,我可以做到以下幾點:
from ot in CoreEntities.Tag select ot where ot.TagId = "{someguid}"
我也有一個「網絡」項目,該項目包括特定對象到我的網站,例如配方。食譜是這樣的:
Recipe (uniqueidentifier RecipeId, string Name)
我的「網絡」項目也有相應的上下文(WebEntities
)數據模型,提出了以下可能:
var recipes = from r in WebEntities.Recipe
select r
where r.Name == "Granny's Meatloaf"
foreach(var r in recipes) {
var recipeTags = from t in CoreEntities.ObjectTag
select t
where t.ObjectId == r.RecipeId
}
這是非常耗費資源爲每個Recipe
必須提取相應的ObjectTag
記錄。嘗試加入實體時,出現以下錯誤:「指定的LINQ表達式包含對與不同上下文關聯的查詢的引用」。 這是否意味着我需要將ObjectTag
添加到我的WebEntities
上下文中?可能還有其他一些有效的方法來加入兩者?
你真的需要兩個獨立的環境中? – veblock 2012-03-04 22:54:25
@veblock:我有兩個單獨的程序集和兩個不同的'.edmx'文件。 Visual Studio會自動創建兩個上下文......我不確定是否可以以某種方式重新使用上下文?我更喜歡重複使用我的「Core」項目中的上下文,但不能將「Web」實體添加到「Core」.edmx中。文件。 – ReFocus 2012-03-05 10:57:13
好吧,想不到任何簡單的解決方案。只要你有兩個不同的上下文,這將是資源密集型的。我寧願想出適合這兩種情況的通用實體模型。 – veblock 2012-03-05 22:10:28