Значение не может быть null. Имя параметра: entitySet
у меня довольно стандартная настройка с классами просто POCO
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public int? ClientId { get; set; }
public virtual Client Clients { get; set; }
}
они используют интерфейс
public interface IProjectRepository
{
IEnumerable<Project> Projects { get; }
}
и построены как репозиторий для ninject для привязки к
public class EFProjectRepository : IProjectRepository
{
private EFDbContext context = new EFDbContext();
public IEnumerable<Project> Projects
{
get { return context.Projects; }
}
}
фактический контекст-это просто DbContext
public class EFDbContext : DbContext
{
public DbSet<Project> Projects { get; set; }
}
когда я пытаюсь включить первые миграции кода, я получаю следующую ошибку
Я сделал этот точный процесс с другими проектами и там, как никогда не было ошибка. Это подключение к локальной базе данных Sql Server. Кажется, нет проблем со строкой подключения. Я искал эту ошибку в интернете, но решения, похоже, отвечают на вопросы, которые не имеют прямого отношения к моей настройке.
8 ответов
опоздал на игру...но если это поможет...
у меня была такая же проблема, все работало нормально, но эта проблема появилась, я добавил следующее в один из моих классов
public HttpPostedFileBase File { get; set; }
, который, казалось, разорвать его.
я гарантировал, что не сопоставил это с базой данных, используя следующее:
[NotMapped]
public HttpPostedFileBase File { get; set; }
вам нужно добавить следующий оператор using:
using System.ComponentModel.DataAnnotations.Schema;
надеюсь, что это помогает
эта проблема может возникнуть, если один из классов POCO не был объявлен в DbContext.
я добавил их и ошибка ушла
Я изменил имя Task
класс POCO из-за его связи со встроенным именем .NET System.Threading.Tasks
. Однако я не изменил этого в" TaskTimeLog " POCO, где была связь. При прохождении кода свойство" Task "в POCO "TaskTimeLog" не показывало ошибку, потому что теперь прикрепленный к этому ключевому слову threading и причине, по которой я изменил имя в первую очередь.
для тех, кто не нашел разрешения в других ответах, я получил эту ошибку, когда создал производный класс из класса, у которого был экземпляр в некоторой модели. Исключение произошло при первом использовании моего контекста в запросе.
это урезанный пример, который будет воспроизводить поведение. Модель-DbSet в моем контексте.
public class Model
{
public int Id { get; set; }
public Duration ExposureDuration { get; set; }
}
public class Duration
{
public int Value { get; set; }
public string Unit { get; set; }
}
//Adding this will cause the exception to occur.
public class DurationExtended : Duration
{ }
Это произошло во время работы. Когда я изменил свойство модели ExposureDuration на тип DurationExtended, все снова работал.
У меня была та же проблема, и потребовалось довольно много времени, чтобы найти решение. В нашем случае мы создали отдельный проект для обработки сущностей, и даже если проект по умолчанию в консоли диспетчера пакетов обрабатывал сущности, мне нужно установить этот проект как проект по умолчанию, чтобы он работал.
Я надеюсь, что это поможет кому-то еще.
Я получил эту ошибку, когда я объявил переменную типа Type-вероятно, потому, что это сложный тип, не поддерживаемый DB.
когда я изменил его на string, ошибка исчезла
public class Sample
{
public int SampleID {get;set;}
public Type TypeInfo {get; set;} //This caused the error,
//because Type is not directly convertible
//in to a SQL datatype
}
я столкнулся с этой же проблемой и решил так:
ошибка в классе модели:
public class UserInformation
{
public string ID { get; set; }
public string AccountUserName { get; set; }
public HttpPostedFileBase ProfilePic { get; set; }
}
нет ошибки в классе модели
public class UserInformation
{
public string ID { get; set; }
public string AccountUserName { get; set; }
public string ProfilePicName { get; set; }
}
моя проблема была решена, как только я обновил ProfilePic
тип имущества из HttpPostedFileBase
to string
. Если у вас есть свойство, которое не имеет типа string
, int
, double
или какой-либо другой базовый/стандартный тип либо заменяют такое свойство или обновляют до типа, который SQL, скорее всего, примет.
удалить строку <Generator>EntityModelCodeGenerator</Generator>
из файла проекта.
проверьте это https://www.c-sharpcorner.com/UploadFile/5d065a/poco-classes-in-entity-framework/