2013-01-31 90 views
3

使用EF5可以完成嗎?EF5一對多關係

X有許多Y Y具有一個X(一個用於一對多的關係)

然而

Y具有具有與第一X

沒有關係是這可能第二X

public class X 
{ 
    public int Id { get; set; } 
    public List<Y> Ys { get; set; } 
} 

public class Y 
{ 
    public int Id { get; set; } 

    public int id_X { get; set; } 
    [ForeignKey("id_X")] 
    public X X { get; set; } 

    public int id_X2 { get; set; } 
    [ForeignKey("id_X2")] 
    public X X2 { get; set; } 
} 

沒有工作。

的代碼看起來是這樣。

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var context = new context()) 
     { 
      var x = context.X.FirstOrDefault(); 
     } 
    } 
} 

public class context : DbContext 
{ 
    public context() 
     : base(@"server=localhost\ALTAIRNOTESTI; uid=sa; pwd=13509; database=DDD") 
    { 

    } 
    public DbSet<X> X { get; set; } 
    public DbSet<Y> Y { get; set; } 
} 

public class X 
{ 
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public List<Y> Ys { get; set; } 
} 

public class Y 
{ 
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public int id_X { get; set; } 
    [ForeignKey("id_X")] 
    [InverseProperty("Ys")] 
    public X X { get; set; } 

    public int id_X2 { get; set; } 
    [ForeignKey("id_X2")] 
    public X X2 { get; set; } 
} 
+2

你試過了嗎?什麼是錯誤? – spajce

回答

2

是的,這是可能的,但你需要告訴EF這X.YsY.X(而不是Y.X2)在單一一個一對多的關係屬於在一起,例如通過使用InverseProperty屬性:

[ForeignKey("id_X")] 
[InverseProperty("Ys")] 
public X X { get; set; } 
+0

感謝Slauma反應,我設法解決,謝謝! – user2030443