2011-11-10 47 views
0

我在模型中加入了两个同类型的导航属性的时候,给我这个错误跑进一个问题:实体框架4.1两个FKS指向同一个表

System.Data.SqlClient.SqlException: 
Invalid column name : 'Createur_IdUtilisateur'. 
Invalid column name : 'Proprietaire_IdUtilisateur'. 

这是代码(碎),其我有:

public class Billet 
{ 
    [Key] 
    public int IdBillet { get; set; } 
    public int IdMandat { get; set; } 
    public string Titre { get; set; } 
    [AllowHtml] 
    public string Description { get; set; } 
    public int IdUtilisateurCreateur { get; set; } 
    public int IdUtilisateurProprietaire { get; set; } 
    public DateTime DateCreation { get; set; } 
    public DateTime? DateFermeture { get; set; } 
    public int EstimationTemps { get; set; } 
    public int Priorite { get; set; } 
    public bool FermetureParCreateur { get; set; } 

    public virtual ICollection<Intervention> Interventions { get; set; } 
    public virtual Mandat Mandat { get; set; } 
    public virtual Utilisateur Createur { get; set; } 
    public virtual Utilisateur Proprietaire { get; set; } 
} 

public class Utilisateur 
{ 
    [Key] 
    public int IdUtilisateur { get; set; } 
    public int IdUtilisateurRole { get; set; } 
    public string Courriel { get; set; } 
    public string Nom { get; set; } 
    public string Password { get; set; } 
    public bool Actif { get; set; } 

    public virtual UtilisateurRole Role { get; set; } 
} 

这就是关系在数据库中的样子。

database relationships

我读过有关[InverseProperty],但我不知道我怎么会去实现,在我的处境。我是否需要在我的Utilisateur类中添加反向导航属性才能使此项工作成功?

+0

可能重复(http://stackoverflow.com/问题/ 5559043 /实体框架代码,第一,二,外商键从 - 同表) –

回答

2

问我意识到自己的错误后不久,这是我的固定它:

public class Entities : DbContext 
{ 
    ... 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     ... 

     modelBuilder.Entity<Billet>() 
      .HasRequired(b => b.Createur) 
      .WithMany() 
      .HasForeignKey(b => b.IdUtilisateurCreateur); 
     modelBuilder.Entity<Billet>() 
      .HasRequired(b => b.Proprietaire) 
      .WithMany() 
      .HasForeignKey(b => b.IdUtilisateurProprietaire); 
    } 
} 
[实体框架代码优先 - 两个外键从同一个表]的