我正在使用实体框架来构建我的数据库。我的模型包含两个实体:Entite
和 ApplicationUser
(请参阅下面的代码(。
这些实体之间有两种关系:
- 一对多:一个
Entite
可以包含一个或多个用户。用户属于一个Entite
。 - 一对一:一个
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; }