Mon scénario:ASP.Net Entity Framework et LINQ référentiel
Ceci est une application Web ASP.NET 4.0 programmé via C#
I mettre en place un modèle référentiel. Mes référentiels partagent tous le même ObjectContext
, qui est stocké dans httpContext.Items. Chaque référentiel crée une nouvelle ObjectSet
de type E. Heres un code de mon dépôt:
public class Repository<E> : IRepository<E>, IDisposable
where E : class
{
private DataModelContainer _context = ContextHelper<DataModelContainer>.GetCurrentContext();
private IObjectSet<E> _objectSet;
private IObjectSet<E> objectSet
{
get
{
if (_objectSet == null)
{
_objectSet = this._context.CreateObjectSet<E>();
}
return _objectSet;
}
}
public IQueryable<E> GetQuery()
{
return objectSet;
}
Disons que j'ai 2 repositorys, 1 pour les Etats et 1 pour les payements et que vous souhaitez créer une requête LINQ contre les deux. Notez que j'utilise les classes POCO avec le framework d'entité. État et pays sont 2 de ces classes POCO.
Repository stateRepo = new Repository<State>();
Repository countryRepo = new Repository<Country>();
IEnumerable<State> states = (from s in _stateRepo.GetQuery()
join c in _countryRepo.GetQuery() on s.countryID equals c.countryID
select s).ToList();
Debug.WriteLine(states.First().Country.country)
essentiellement, je souhaite récupérer l'état et l'entité de pays associée. La requête ne renvoie que les données d'état ... et je reçois une exception d'argument null sur le Debug.WriteLine
LazyLoading est désactivé dans mon .edmx ... c'est comme je le veux.
Je fais quelque chose de similaire à http://stackoverflow.com/questions/542595/entity-framework-singletonish-objectcontext-good-bad-or-overthinking pour mon ObjectContext. –
Selon http://www.4guysfromrolla.com/articles/060904-1.aspx, HttpContext.Items fonctionne sur une base par requête. Par conséquent, des demandes différentes ne doivent pas provoquer de conditions de concurrence avec le contexte de l'objet. –
Vous avez raison pour HttpContext.Items. Retiré cette partie de ma réponse, merci. –