实体框架错误:无法确定类型

时间:2017-04-05 10:40:44

标签: c# entity-framework asp.net-identity

我正在使用Entity Framework构建我的数据库。我的模型包含两个实体:EntiteApplicationUser(请参阅下面的代码)。

这些实体之间有两种关系:

  1. 一对多:Entite可以包含一个或多个用户。用户属于Entite
  2. 一对一:Entite必须有一个用户作为负责人,而用户只能负责一个Entite
  3. Entite

    public class Entite : AuditableEntity<int>
    {
            [Required]
            [MaxLength(10)]
            public String code { get; set; }
    
            [Required]
            [MaxLength(50)]
            public String Libelle { get; set; }
    
            [Required]
            [MaxLength(10)]
            public String type { get; set; }
    
            [Key, ForeignKey("ResponsableId")]
            public int? ResponsableId { get; set; }
    
            public virtual ApplicationUser responsable { get; set; }
            public int? RattachementEntiteId { get; set; }
            [Key, ForeignKey("RattachementEntiteId")]
            public virtual Entite rattachement { get; set; }
    
            public List<Entite> Children { get; set; }
    }
    

    ApplicationUser

    public class ApplicationUser : IdentityUser
    {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public int Matricule { get; set; }
            public DateTime? dateRecrutement { get; set; }      
            public int? entiteId { get; set; }
            [ForeignKey("entiteId")]
            public virtual  Entite entite { get; set; }
    }
    

    当我尝试使用Add-Migration命令构建数据库时,出现此错误:

      

    无法确定类型之间关联的主要结尾

    关于这个问题的任何想法?

    感谢您的帮助

1 个答案:

答案 0 :(得分:0)

它看起来像你的Entite模型类中的小错误/错误。

ForeignKey应该引用您的ApplicationUser,目前它正在引用自己,并且将为responsable生成一个新密钥。

如果我们将ForeignKey引用交换到下面,那么这看起来应该可以解决您的问题:

[Key, ForeignKey("responsable")]
public int? ResponsableId { get; set; }

public virtual ApplicationUser responsable { get; set; }

或者您可以像在rattachement上一样交换参考。

public int? ResponsableId { get; set; }
[Key, ForeignKey("ResponsableId ")]
public virtual ApplicationUser responsable { get; set; }