Использование 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();
}
}