Leg*_*ion 7 c# entity-framework
在我的解决方案中,我有一个域项目和一个 DataAccess 项目。My Domain 项目包含用于各种存储库的域对象和接口以及用于包含我所有存储库的 UnitOfWork 的接口。我的 DataAccess 项目包含所有这些接口的实现以及我的域对象的 EF 版本。
因此,如果我有一个被调用的类Person
并且我想向Person
数据库添加一个,它看起来像这样:
unitOfWork.People.Add(person);
unitOfWork.Complete();
Run Code Online (Sandbox Code Playgroud)
在里面,unitOfWork.People.Add(person)
我使用 AutoMapper将我的域Person
对象映射到我的 EFPerson
对象。然后我将我的 EFPerson
对象添加到 EFDbContext
对象中。
public void Add(Person person) {
DataAccess.Entities.Person dbPerson = Mapper.Map<DataAccess.Entities.Person>(person);
dbContext.People.Add(dbPerson);
}
Run Code Online (Sandbox Code Playgroud)
Complete() 函数只是包装了 SaveChanges()。
public int Complete() {
dbContext.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
通常 EF 会在插入后更新插入对象的 DB 生成的 ID。但在这种情况下,EF 对我的 Domain Person 对象一无所知。
由于我的 Domain Person 对象没有它的 ID,我无法更新数据库条目或从数据库中重新获取它。
我能想到的唯一替代方法是在服务器上生成一个 guid 并将其用作 ID。但这会以两个 ID 的形式产生冗余。它也不是非常用户友好,因为用户将在搜索字段中引用此 ID。记住 ID 135 比记住 guid 要简单得多。
有没有办法让 dbContext 直接更新域对象的 ID,或者让 ID 通过层向上冒泡?
归档时间: |
|
查看次数: |
2197 次 |
最近记录: |