EF5一对多的关系

时间:2013-01-31 20:19:29

标签: c# entity-framework entity-framework-5

可以使用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; }
}

1 个答案:

答案 0 :(得分:2)

是的,这是可能的,但您需要告诉EF X.YsY.X(而不是Y.X2)在一对一关系中属于一起,例如使用InverseProperty属性:

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