【发布时间】:2009-03-17 12:09:41
【问题描述】:
我有 3 个实体
- 打印机
- 服务器
- 驱动程序
打印机具有服务器和驱动程序属性
在我的代码中,我设置了一个 IEnumerable
现在,当我尝试将其提交到数据库时,我正在使用以下代码:
foreach (Printer p in printers)
{
printmanEntities _dc = new printmanEntities();
p.Driver = _dc.DriverSet.FirstOrDefault(d => d.Name == p.Driver.Name) ?? p.Driver;
p.Server = _dc.ServerSet.FirstOrDefault(s => s.Name == p.Server.Name) ?? p.Server;
_dc.AddToPrinterSet(p);
_dc.SaveChanges();
}
假设我将为每个打印机对象获取一条记录,并为每个唯一的驱动程序和服务器名称获取一条记录。但实际结果是相当连贯的。
上面的代码为每个唯一的 Driver 对象生成一个记录,但没有明显的原因为每个唯一的服务器创建多个记录。并且所有打印机记录都指向单个服务器记录。
此外,如果我首先分配 p.Server,那么我只会获得服务器实体的唯一记录,但会获得驱动程序实体的多条记录。
我做错了什么?
更新:将 EF 替换为 LINQ2SQL,它的工作方式与我预期的一样。每个唯一实体都有一行,仅此而已。
【问题讨论】:
标签: entity-framework