Использование GetTable() дает ошибку "тип T должен быть ссылочным типом"

Я пытаюсь добавить универсальный метод Insert, используя GetTable(), с моим шаблоном хранилища с EntityFramework(надеюсь, я получил правильный шаблон)

Но я получаю ошибку, как показано в комментарии ниже.

Я на самом деле хочу вставить записи в базу данных независимо от типа таблицы. Любая помощь с благодарностью:)

Это мой базовый класс BaseRepository

public abstract class BaseRepository<T>
{
    private static DBEntities dbEntities;

     public BaseRepository()
    {
        dbEntities = new DBEntities();
    }
    public IQueryable GetTable<T>(T entity) where T : class
    {
    return dbEntities.CreateObjectSet<T>();
    }

public void Insert<T>(T obj)
{
    //the line below gives an error 'The Type T must be a reference type
    // in order to use it as parameter T. I HAVE tried adding ref here
    // and in GetTable method, but same error
    var table = GetTable(obj);        
    int saveChanges = dbEntities.SaveChanges();

}

}

1 ответ

Решение

Попробуйте изменить свой код:

public abstract class BaseRepository<T> where T : class
{
    private static DBEntities dbEntities;

    public BaseRepository()
    {
        dbEntities = new DBEntities();
    }
    public IQueryable GetTable(T entity) 
    {
        return dbEntities.CreateObjectSet<T>();
    }

    public void Insert(T obj)
    {
       //the line below gives an error 'The Type T must be a reference type
       // in order to use it as parameter T. I HAVE tried adding ref here
       // and in GetTable method, but same error
       var table = GetTable(obj);        
       int saveChanges = dbEntities.SaveChanges();    
    }
}
Другие вопросы по тегам