我正在使用实体框架 4.3,并且我试图通过在创建新实体时设置导航属性来引用现有实体,但是当我调用 save EF 时抱怨我将导航属性设置为的表中存在 PK 冲突(即它正在创建一个新记录,而不是参考!)。
我如何附加到现有的 POCO 而不是引用它并让 EF 尝试创建新的数据库记录(但不仅仅是使用 ID,理想情况下我想引用来自另一个查询的实际实体)?
提前致谢,
克里斯
public class BusinessUnit
{
public int BusinessUnitID { get; set; }
public ExternalPlugin AccountsDataSourceModule { get; set; }
public ExternalPlugin OptionalContactsDataSourceModule { get; set; }
}
public BusinessUnit NewBusinessUnit(string name, ExternalPlugin accountsModuleId = null, ExternalPlugin contactsModuleId = null)
{
IUnitOfWork unitOfWork = UnitOfWorkFactory.CreateUnitOfWork();
BusinessUnit unit = new BusinessUnit();
unit.CompanyName = name;
unit .AccountsDataSourceModule = accountsModuleId; // this causes a problem
unit .OptionalContactsDataSourceModule = contactsModuleId; // as does this
unitOfWork.BusinessUnitRepository.Insert(unit);
unitOfWork.Save();
return unit;
}