实体框架错误:无法确定类型之间关联的主体端



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

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

  1. 一对多:一个Entite可以包含一个或多个用户。用户属于一个Entite
  2. 一对一:一个Entite必须有一个用户负责,一个用户只能负责一个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; }
}

应用程序用户

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 命令构建数据库时,出现此错误:

无法确定类型之间关联的主端

对这个问题有任何想法吗?

感谢您的帮助

它看起来像是 Entite 模型类中的一个小错别字/错误。

ForeignKey应该引用您的应用程序用户,当前它正在引用自身,并且将为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; }

相关内容

  • 没有找到相关文章

最新更新