【发布时间】:2016-01-09 02:53:45
【问题描述】:
我有以下实体:Device 和 Printer
public class Device
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DeviceId { get; set; }
public int? DefaultPrinterId { get; set; }
[ForeignKey("DefaultPrinterId")]
public virtual Printer DefaultPrinter { get; set; }
}
public class Printer
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PrinterId { get; set; }
public int? DeviceId { get; set; }
[ForeignKey("DeviceId")]
public virtual Device Device { get; set; }
}
设备和打印机之间有两种关系
- 每台打印机可能托管或不托管在特定设备上,这由
Printer实体上的Device外键表示。这是一对多的关系。 - 默认情况下,每个设备都将配置为使用特定的打印机。这由
DefaultPrinter外键表示。这是一对多的关系。
当我使用 Entity Framework 生成数据库时,我收到错误消息:“无法确定关联的主体端” 要找到有关此错误如何与一对一关系相关的信息并不难,但是我还没有找到任何关于这与两个一对多关系的关系。
有什么方法可以告诉 EF 我不想定义一对一的关系?
【问题讨论】:
-
我认为如果没有桥接表,您无法在 EF 中完成这项工作,因为设备和打印机需要共享密钥 (stackoverflow.com/questions/6531671/…)。我认为您将需要设备中的打印机集合和打印机中的设备集合。
标签: c# entity-framework ef-code-first