Надеюсь, это имеет смысл. У меня есть веб-приложение ASP.NET, которое использует Entity Framework. Я добавил пару пользовательских таблиц в базу данных и создал отдельный проект для обработки операций CRUD для этих таблиц. Я выбрал отдельный проект, потому что не хочу, чтобы будущие обновления приложения перезаписывали мои пользовательские функции.
Моя проблема в этом. Как мне прикрепить / объединить мой пользовательский ObjectContext с ObjectContext приложения? Я хочу использовать тот же UnitOfWorkScope (уже в приложении) для поддержки одного экземпляра ObjectContext для каждого HTTP-запроса. Опять же, я не хочу добавлять мои ObjectSets в ObjectContext приложения по моей причине, указанной выше.
Вот код:
Widget.cs
public partial class Widget
{
public Widget()
{
}
public int WidgetId {get;set;}
public string WidgetName {get;set;}
}
WidgetObjectContext.cs
public partial class WidgetObjectContext : ObjectContext
{
private readonly Dictionary<Type, object> _entitySets;
public ObjectSet<T> EntitySet<T>()
where T : BaseEntity
{
var t = typeof(T);
object match;
if(!_entitySets.TryGetValue(t, out match))
{
match = CreateObjectSet<T>();
_entitySets.Add(t, match);
}
return (ObjectSet<T>)match;
}
public ObjectSet<Widget> Widgets
{
get
{
if((_widgets == null))
{
_widgets = CreateObjectSet<Widget>();
}
return _widget;
}
}
private ObjectSet<Widget> _widgets;
В моем классе WidgetManager, если бы я использовал ObjectContext приложения, я бы запрашивал свои таблицы следующим образом:
var context = ObjectContextHelper.CurrentObjectContext;
var query = from c in context.ObjectSet .... etc
Я бы хотел сделать что-то вроде этого:
var context = ObjectContextHelper.CurrentObjectContext.Attach(WidgetObjectContext);
Я знаю, что это не сработает, но в этом суть того, чего я пытаюсь достичь. Надеюсь, это достаточно ясно. Благодарю.