可以使用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; }
}
答案 0 :(得分:2)
是的,这是可能的,但您需要告诉EF X.Ys
和Y.X
(而不是Y.X2
)在一对一关系中属于一起,例如使用InverseProperty
属性:
[ForeignKey("id_X")]
[InverseProperty("Ys")]
public X X { get; set; }