J'espère que cela a du sens. J'ai une application Web ASP.NET qui utilise Entity Framework. J'ai ajouté quelques tables personnalisées à la base de données et créé un projet distinct pour gérer les opérations CRUD pour ces tables. J'ai choisi le projet séparé car je ne veux pas que les futures mises à niveau de l'application écrasent mes fonctionnalités personnalisées.Attacher des ObjectSets supplémentaires à ObjectContext à partir du projet séparé
Mon problème est le suivant. Comment joindre/combiner mon objet ObjectContext personnalisé au ObjectContext de l'application? Je veux utiliser le même UnitOfWorkScope (déjà dans l'application) pour gérer l'instance ObjectContext par requête HTTP. Encore une fois, je ne veux pas ajouter mes ObjectSets à ObjectContext de l'application pour la raison indiquée ci-dessus.
Voici un code:
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;
Dans ma classe WidgetManager si j'utilisais ObjectContext de l'application j'interroger mes tableaux comme ceci:
var context = ObjectContextHelper.CurrentObjectContext;
var query = from c in context.ObjectSet .... etc
Ce que je veux serait de faire quelque chose comme ceci:
var context = ObjectContextHelper.CurrentObjectContext.Attach(WidgetObjectContext);
Je sais que cela ne fonctionne pas, mais c'est l'essentiel de ce que je suis en train d'accomplir. J'espère que c'est assez clair. Merci.
J'avais peur que cela soit vrai. Cela a du sens en fonction de votre logique. Ce que j'ai fini par faire était de créer un modèle de données séparé qui ne modélisait que mes tables personnalisées. J'ai ensuite utilisé le modèle de générateur d'entité POCO et cela m'a donné tout ce dont j'avais besoin. Très simple et rapide. Merci pour votre contribution Ladislav. – trevorc