Значение не может быть 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; }
}

когда я пытаюсь включить первые миграции кода, я получаю следующую ошибку

image of error

Я сделал этот точный процесс с другими проектами и там, как никогда не было ошибка. Это подключение к локальной базе данных Sql Server. Кажется, нет проблем со строкой подключения. Я искал эту ошибку в интернете, но решения, похоже, отвечают на вопросы, которые не имеют прямого отношения к моей настройке.

8 ответов


У меня была та же проблема, и причиной был класс POCO, который имел свойство типа Type.


опоздал на игру...но если это поможет...

у меня была такая же проблема, все работало нормально, но эта проблема появилась, я добавил следующее в один из моих классов

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/

enter image description here