我使用的是Entity Framework 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;
}