У меня есть объект POCO «Клиент» в моем проекте Entity Framework 4.Я хочу, чтобы мои сущности Customer отображались на моих верхних уровнях как общий список, а не как ObjectSet.
У меня есть интерфейс IUnitOfWork, который выглядит следующим образом:
public interface IUnitOfWork
{
string Save();
IList<Customer> Customers { get; }
}
Внизу на моей Entity FrameworkDAL (который реализует вышеуказанный интерфейс) У меня есть следующее:
public class EntityContainer : ObjectContext, IUnitOfWork
{
private IObjectSet<Customer> _customers;
public IList<Customer> Customers
{
get
{
if (_customers == null)
{
_customers = CreateObjectSet<Customer>("Customers");
}
return _customers.ToList<Customer>() ;
}
}
}
Однако строка «CreateObjectSet (« Customers »)» не работает.Каждый раз, когда я пытаюсь добавить нового «Клиента», ничего не происходит.Интересно, что если я вернусь к использованию IObjectSet, то код работает.Например:
public interface IUnitOfWork
{
string Save();
IObjectSet<Contact> Contacts { get; }
}
public class EntityContainer : ObjectContext, IUnitOfWork
{
private IObjectSet<Customer> _customers;
public IObjectSet<Customer> Customers
{
get
{
if (_customers == null)
{
_customers = CreateObjectSet<Customer>("Customers");
}
return _customers;
}
}
}
IQueryable также работает, но я не могу заставить работать IList и не знаю почему.У кого-нибудь есть идеи?
#
Исправление к первоначальному вопросу.Использование IQueryable не работает, как и IEnumerable.Это связано с тем, что в репозитории Customer необходимо предоставить методы «Добавить» и «Удалить» для добавления / удаления из коллекции объектов (добавление или удаление объектов клиента в приведенном выше примере).Ни IQueryable, ни IEnumerable не позволяют добавлять или удалять объекты;вместо этого необходимо использовать ICollection или IList.Это оставляет меня обратно к моей первоначальной проблеме.Я не хочу выставлять свою коллекцию в хранилище как ObjectSet.Я хочу использовать тип, который не привязан к EntityFramework, т. Е. Я хочу использовать общий список.
У кого-нибудь есть еще предложения?Я подозреваю, что есть простой способ сделать это, но я недостаточно знаком с фреймворком, чтобы понять это.