到目前为止,在我搜索过的每个地方,实体框架中的所有一对一关系都有一个主体和一个从属实体。我想要的是两个主要实体之间的一对一关系。
因此,让我们设置一个示例。想象一下汽车发动机和汽车。汽车引擎可以没有汽车而存在,汽车可以没有汽车引擎而存在。可以将汽车引擎 放置在汽车中(可选),并且将汽车 放置在汽车中(可选)。我希望能够LoadAsync
拥有汽车引擎(如果有)时关联的汽车,以及拥有汽车(如果有)时关联的汽车引擎。
如您所见,我不能使用委托人和从属实体来实现这一点。
实体应如下所示:
public class Car
{
[Key]
public string SN { get; set; }
public string Plate { get; set; }
public string IncludedEngineId { get; set; }
[ForeignKey("IncludedEngineId")]
public virtual Engine IncludedEngine { get; set; }
}
public class Engine
{
[Key]
public string SN { get; set; }
public int CC { get; set; }
public string PlacedInCarId { get; set; }
[ForeignKey("PlacedInCarId")]
public virtual Car PlacedInCar { get; set; }
}
但是,如果我这样做,汽车C1可能具有IncludedEngineId E1,但E1可能具有PlacedInCarId C2!不会在C1和E1之间建立“配对”。
有没有一种方法可以使用注释来实现?如果没有,有没有办法使用流利的api?还是我必须将其实现为业务逻辑?
答案 0 :(得分:0)
似乎这是两个表之间的一种循环引用,希望EF不支持此功能。您要么必须为两个表创建单独的表,要么对此进行编码。