Я пытаюсь добавить общий метод Insert с помощью GetTable() с моим шаблоном репозитория с EntityFramework (надеюсь, у меня есть правильный рисунок)Использование GetTable() дает ошибку «тип T должен быть ссылочным типом»
Но я получаю сообщение об ошибке, как показано в комментарии ниже.
Я действительно хочу, чтобы вставить записи в базе данных, независимо от типа таблицы Любая помощь очень ценится :)
Это мой 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) Если класс имеет общий тип pe, вы не должны повторять этот параметр в методах. 2) Ограничение 'T: class' должно быть в' BaseRepository ', а не на методах. –
CodesInChaos
«Я попробовал добавить ссылку здесь» предлагает путаницу в вашем уме между ссылочными * типами * и ссылочными * параметрами *, которые можно было бы очистить путем тщательного чтения [Параметр, проходящий в C#] (http: //www.yoda .arachsys.com/csharp/parameters.html) – AakashM