我希望这是有道理的。我有一个使用实体框架的ASP.NET Web应用程序。我已经添加了一些自定义表到数据库,并创建了一个单独的项目来处理这些表的CRUD操作。我选择了单独的项目,因为我不想将来升级到应用程序来覆盖我的自定义功能。将附加的ObjectSet从独立的项目附加到ObjectContext
我的问题是这样的。如何将我的自定义ObjectContext附加/组合到应用程序的ObjectContext中?我想使用相同的UnitOfWorkScope(已经在应用程序中)来维护每个HTTP请求的一个ObjectContext实例。同样,我不想将我的ObjectSet添加到应用程序的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);
我知道这不会工作,但那是什么,我试图完成的要点。希望这已经够清楚了。谢谢。
我担心这可能是真的。它根据你的逻辑确实有意义。我最终做的是创建一个独立的数据模型,只模拟我的自定义表。然后我使用了POCO实体生成器模板,这给了我所需的一切。非常简单和快速。感谢您的投入拉迪斯拉夫。 – trevorc 2010-09-17 11:34:47