Эквивалент InsertOnSubmit в DbContext.DbSet сначала с использованием кода Entity Framework 4 - PullRequest
8 голосов
/ 11 апреля 2011

Вначале я использую код структуры сущностей и создаю общий класс Repository, который обеспечивает доступ к данным.В этом классе я хочу метод Add(T entity).Тем не менее, нет метода InsertOnSubmit как части класса DbSet<T>, и если я пытаюсь использовать метод Add, я получаю ошибку времени компиляции:

The type 'TEntity' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'System.Data.Entity.DbContext.Set<TEntity>()'

Это метод:

public TEntity Add(TEntity entity)
{
     return _database.Set<TEntity>().Add(entity);
}

Кто-нибудь знает способ обойти это?

Спасибо

Ответы [ 2 ]

12 голосов
/ 11 апреля 2011

Добавьте общее ограничение к вашему классу репозитория:

public class Repository<TEntity> where TEntity : class
5 голосов
/ 11 апреля 2011

Я буквально только что опубликовал этот вопрос, но я нашел способ обойти проблему - используйте метод Set (Type t) вместо универсальной версии, например, так:

public TEntity Add(TEntity entity)
{
   return (TEntity)_database.Set(typeof(TEntity)).Add(entity);
}

Немного интеллигенцииосмотр проходит долгий путь!Надеюсь, это кому-нибудь поможет ...

...