내 시나리오 :ASP.Net 엔티티 프레임 워크 저장소 및 Linq에
이 C#을
내가 저장소 패턴을 구현 통해 프로그래밍하는 ASP.NET 4.0 웹 응용 프로그램입니다. 내 리포지토리는 모두 ObjectContext
을 공유하며 httpContext.Items에 저장됩니다. 각 저장소 내 저장소에서 유형 E.을 Heres의 새로운 ObjectSet
몇 가지 코드를 작성
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;
}
내가 COUNTRYS 2 repositorys, 상태 1과 1을 모두에 대한 LINQ 쿼리를 작성하려는 말할 수 있습니다. 엔티티 프레임 워크에서 POCO 클래스를 사용합니다. 주와 국가는이 POCO 수업 중 2 개입니다.
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)
본질적으로 상태 및 관련 국가 엔티티를 검색하고 싶습니다. 쿼리는 상태 데이터 만 반환합니다 ... 그리고 null 인수 예외가 발생합니다 Debug.WriteLine
LazyLoading이 내 .edmx에서 비활성화되었습니다 ... 원하는 방식입니다.
내 ObjectContext에 대해 http://stackoverflow.com/questions/542595/entity-framework-singletonish-objectcontext-good-bad-or-overthinking와 비슷한 작업을하고 있습니다. –
http://www.4guysfromrolla.com/articles/060904-1.aspx에 따르면 HttpContext.Items는 요청별로 작동합니다. 따라서 서로 다른 요청이 객체 컨텍스트와 경쟁 조건을 야기해서는 안됩니다. –
당신은 HttpContext.Items에 맞습니다. 내 대답에서 그 부분을 삭제했습니다. 고마워요. –