У меня неприятности получать это право ...EntityFramework - основной проект или веб-проект с общими объектами?
У меня есть проект «ядро» с общим набором функциональных возможностей, включая, например, мечения. Маркировка включает в себя набор объектов, некоторые из которых включают Tag
и ObjectTag
.
Они в основном выглядеть следующим образом:
Tag (uniqueidentifier TagId, nvarchar(max) Tag)
ObjectTag (uniqueidentifier TagId, uniqueidentifier ObjectId)
Мой проект "Core" также содержит модель данных с DbContext
названием CoreEntities
. Так что я могу сделать следующее:
from ot in CoreEntities.Tag select ot where ot.TagId = "{someguid}"
У меня также есть «Web» проект, который включает в себя объект специфичны для моего веб-сайта, например Рецепт. Рецепт выглядит следующим образом:
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
@veblock: У меня есть две отдельные сборки с двумя разными файлами '.edmx'. Visual studio автоматически создает два контекста ... Я не уверен, могу ли я каким-то образом использовать контекст? Я предпочитаю повторно использовать контекст из моего проекта «Core», однако не стоит добавлять «Web» в «Core» .edmx'. файл. – ReFocus
Ну не может думать о каком-либо простом решении. Пока у вас есть 2 отдельных контекста, он будет ресурсоемким. Я бы предпочел придумать универсальную модель сущности для удовлетворения обоих случаев. – veblock