web-dev-qa-db-fra.com

La valeur ne peut pas être nulle. Nom du paramètre: entitySet

J'ai une configuration assez standard avec simplement des classes 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; }
}

Ils utilisent une interface 

public interface IProjectRepository
{
    IEnumerable<Project> Projects { get; }
}

et sont construits comme un référentiel pour ninject se lier à

public class EFProjectRepository : IProjectRepository
{
    private EFDbContext context = new EFDbContext();

    public IEnumerable<Project> Projects
    {
        get { return context.Projects; }
    }
}

Le contexte actuel est simplement DbContext

public class EFDbContext : DbContext
{
    public DbSet<Project> Projects { get; set; }
}

Lorsque j'essaie d'activer les premières migrations de code, le message d'erreur suivant s'affiche:

image of error

J'ai fait ce processus exact avec d'autres projets et il n'y a jamais eu d'erreur. Cela se connecte à une base de données SQL Server locale. Il ne semble pas y avoir de problème avec la chaîne de connexion. J'ai cherché cette erreur en ligne, mais les solutions semblent répondre à des questions qui ne concernent pas directement ma configuration.

21
user1752532

Ce problème peut se produire si l'une des classes POCO n'a pas été déclarée dans le DbContext.  

Je les ai ajoutés et l'erreur est partie

J'avais changé le nom de la classe Task POCO en raison de son association avec un nom .NET intégré System.Threading.Tasks. Cependant je n'avais pas changé cela dans le POCO "TaskTimeLog" où il y avait une relation. En parcourant le code, la propriété "Task" dans le fichier POCO "TaskTimeLog" ne montrait pas d'erreur, car elle était maintenant associée à ce mot clé de thread et à la raison pour laquelle j'avais changé le nom.

6
user1752532

J'ai eu le même problème et la cause était une classe POCO qui avait une propriété de type Type.

30
Th4t Guy

En retard au jeu ... mais si cela aide ...

J'ai eu le même problème, tout fonctionnait bien, mais ce problème est apparu, j'ai ajouté ce qui suit à l'un de mes cours. 

public HttpPostedFileBase File { get; set; }

qui semblait le casser. 

Je me suis assuré de ne pas mapper cela dans la base de données en utilisant les éléments suivants:

[NotMapped]
public HttpPostedFileBase File { get; set; }

Vous devez ajouter l'instruction using suivante:

using System.ComponentModel.DataAnnotations.Schema;

J'espère que cela t'aides

15
James

Pour ceux qui ne trouvent pas de résolution dans les autres réponses, j'ai eu cette erreur lorsque j'ai créé une classe dérivée à partir d'une classe qui avait une instance dans un modèle. L'exception s'est produite lors de la première utilisation de mon contexte dans une demande.

Ceci est un exemple simplifié qui reproduira le comportement. Model est un DbSet dans mon contexte.

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
{ }

Cela s'est passé pendant les travaux en cours. Lorsque j'ai modifié la propriété de modèle ExposureDuration en type DurationExtended, tout fonctionnait à nouveau.

3
R. Schreurs

J'ai quelques propriétés dans "ExpenseModel", l'une d'elles était ...

public virtual Type TypeId {get; set;}

qui cause la même erreur ci-dessus à cause de "Type" propertyType, 
"Type" => "ExpenseType" et cela a fonctionné ... :-)

public virtual ExpenseType TypeId {get; set;}

ExpenseModel.cs

public class ExpenseTypes
{
    [Key]
    public int Id { get; set; }
    public string TypeName { get; set; }
    public string Description { get; set; }
}
0
Amol Teli

Supprimez la ligne <Generator>EntityModelCodeGenerator</Generator> de votre fichier de projet.

Découvrez ceci https://www.c-sharpcorner.com/UploadFile/5d065a/poco-classes-in-entity-framework/

 enter image description here

0
FindOutIslamNow

J'ai rencontré le même problème et résolu comme suit:

Erreur dans la classe de modèle:

public class UserInformation
{
    public string ID { get; set; }
    public string AccountUserName { get; set; }
    public HttpPostedFileBase ProfilePic { get; set; }
}

Aucune erreur dans la classe de modèle

public class UserInformation
{
    public string ID { get; set; }
    public string AccountUserName { get; set; }
    public string ProfilePicName { get; set; }
}

Mon problème a été résolu une fois que j'ai mis à jour le type de propriété ProfilePic de HttpPostedFileBase à string. Si vous avez une propriété qui n'est pas de type string, int, double ou un autre type de base/standard, remplacez cette propriété ou mettez à jour un type que SQL est plus susceptible d'accepter.

0
npineda

J'ai eu le même problème et il a fallu un certain temps pour trouver la solution. Dans notre cas, nous avons créé un projet séparé pour gérer les entités et même si le projet par défaut dans la console du gestionnaire de packages était celui qui traitait les entités, je dois définir ce projet comme projet par défaut pour le faire fonctionner. .

J'espère que cela aidera quelqu'un d'autre.

0
Erwann Blancart

J'ai eu cette erreur lorsque j'ai déclaré une variable de type Type - ce qui est probablement dû au fait qu'il s'agit d'un type complexe non pris en charge par la base de données.

Quand je l'ai changé en chaîne, l'erreur est partie

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
}
0
Looking4Answers