我试图将我的领域模型(负责业务逻辑)与我的数据模型分开,后者是EF 7用来构建架构的。
但是,我在将对领域模型所做的更改持久化到数据库方面遇到了问题。
举个例子,假设我有一个数据模型PersonTable和一个领域模型Person:
public class PersonTable
{
public virtual Guid Id { get; set; }
public virtual String Name { get; set; }
public virtual String Surname { get; set; }
}
public class Person
{
public virtual Guid Id { get; set; }
public virtual String Name { get; set; }
public virtual String Surname { get; set; }
//Other Domain Methods and Constructors...
}
我希望通过这种方式将我的域名更改持久化到数据库中:
public void Update(Person p)
{
var person = new PersonTable
{
Id = p.Id,
Name = p.Name,
Surname = p.Surname
}
PersonDbContext.Update(person);
PersonDbContext.SaveChanges();
}
当我尝试应用这些更改时,我收到一个InvalidOperationException,其中说:“无法跟踪实体类型'Tables.PersonTable'的实例,因为已经正在跟踪另一个具有相同键的此类型的实例。对于新实体,请考虑使用IIdentityGenerator生成唯一键值。”我认为这与实体跟踪有关,但在EF 7中如何工作呢?我希望能够应用此模式,以便我可以分离这两个模型。