鉴于模型:
public abstract class Person
{
public int Id {get;set;}
}
public class Customer : Person
{
public string Name {get;set;}
}
public class User : Person
{
public string Password {get;set;}
}
我需要添加引用同一个人的客户和用户
context.Set<Customer>().Add(new Customer { Name = "X" });
context.SaveChanges();
现在我的数据库中有2个条目
Persons
Id: 1
Customers
Id: 1
Name: X
当我尝试将用户添加到此人
时context.Set<Customer>().Add(new User { Id = 1, Password = "0" });
context.SaveChanges();
实体框架忽略 Id = 1 并创建一个新人。 如何让这个工作?
答案 0 :(得分:2)
“我需要添加一个客户和一个引用同一个人的用户”
这没有任何意义,因为客户和用户不推荐给某人,他们 一个人。如果您有类型为Customer
的对象和另一个类型为User
的对象,则没有名为Person
的第三个标识。只有两个身份,并且都具有从Person
基类继承的属性。
如果您的域中存在这样的情况:一个人可以成为客户,而用户同时使用继承层次结构进行建模则不是理想的方法。你最好在两个指向一个人的类中都有一个引用,如下所示:
public class Person
{
public int Id {get;set;}
}
public class Customer
{
public int Id {get;set;}
public string Name {get;set;}
public int PersonId {get;set;}
public Person Person {get;set;}
}
public class User
{
public int Id {get;set;}
public string Password {get;set;}
public int PersonId {get;set;}
public Person Person {get;set;}
}