【发布时间】:2016-04-13 05:54:59
【问题描述】:
我有一个联系人类
[Table("Contacts")]
public class Contact
{
public string Id { get; set; }
public string Name { get; set; }
}
我有两个继承自 Contact 的类:
[Table("Employees")]
public class Employee : Contact
{
public decimal Salary { get; set; }
}
[Table("Suppliers")]
public class Supplier : Contact
{
public string TIN { get; set; }
}
我使用 Entity Framework 6.3 作为我的 ORM。
我可以模拟一些相同的联系人既可以是 Employee 又可以是 Employee 和 具有相同唯一 ID 的供应商。
Employee emp = new Employee();
emp.Id = "C1";
emp.Name = "Employees";
emp.Salary = 10000;
emp.TrackingState = TrackingState.Added;
Supplier sup = new Supplier();
sup.Id = "C1";
sup.Name = "Employees";
sup.TIN = "ABC";
sup.TrackingState = TrackingState.Added;
当我这样做时:
context.Employee.Add(emp);
context.Supplier.Add(sup);
context.Save();
显然,它不允许我添加记录。 我收到一个错误:
“违反 PRIMARY KEY 约束 'PK_dbo.Contacts'。无法在对象 'dbo.Contacts' 中插入重复键。重复键值为 (C1)。\r\n语句已终止。”
我可以让供应商也与员工共享相同的 ID,并且 启用员工和供应商的插入/更新?
谢谢
【问题讨论】:
标签: entity-framework-6 domain-model