Мой сценарий:
Это веб-приложение ASP.NET 4.0, запрограммированное с помощью C #
Я реализую шаблон репозитория.Все мои репозитории имеют одинаковые ObjectContext
, которые хранятся в httpContext.Items.Каждый репозиторий создает новый ObjectSet
типа E. Вот некоторый код из моего репозитория:
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;
}
Допустим, у меня есть 2 репозитория, 1 для состояний и 1 для стран, и я хочу создать запрос linq дляи то и другое.Обратите внимание, что я использую классы POCO с каркасом сущностей.Штат и Страна являются двумя из этих классов 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)
По сути, я хочу получить информацию о штате и связанной стране.Запрос только возвращает данные о состоянии ... и я получаю исключение с нулевым аргументом для Debug.WriteLine
LazyLoading отключен в моем .edmx ... вот так, как я этого хочу.