C# 在多层应用程序中使用EF和连接的POCO
我正在开发一个多层桌面应用程序(Onion架构),使用C# 在多层应用程序中使用EF和连接的POCO,c#,entity-framework,ef-code-first,ioc-container,poco,C#,Entity Framework,Ef Code First,Ioc Container,Poco,我正在开发一个多层桌面应用程序(Onion架构),使用WinForm项目作为UI,我首先使用EF code访问我的DB,对于我的域模型,我想使用POCOs,因此我有两个选择: 已连接的POCOs 断开连接的POCOs 如果我使用断开连接的POCOs,我必须在EF之外做很多事情,并且不使用EF功能,因为: 我必须在客户端保存和管理实体的状态 当我想将更改保存到数据库时,我必须同步客户端POCO的状态 使用DbContext实体的状态 在将POCOs添加到新创建的DbContext期间,我必须
WinForm
项目作为UI
,我首先使用EF code
访问我的DB
,对于我的域模型,我想使用POCO
s,因此我有两个选择:
- 已连接的
sPOCO
- 断开连接的
sPOCO
POCO
s,我必须在EF之外做很多事情,并且不使用EF功能,因为:
- 我必须在客户端保存和管理实体的
状态
- 当我想将更改保存到数据库时,我必须同步客户端
的POCO
使用状态
实体的DbContext
状态
- 在将
s添加到新创建的POCO
期间,我必须控制 防止将具有相同键的两个实体添加到DbContext
DbContext
POCO
s似乎很正常,但在这种情况下,我认为我面临以下挑战:
- 如果我想在多用户中使用
容器管理我的IoC
的生存期 环境,并使所有用户的DbContext
始终处于活动状态 将DbContexts
s保存回对DB的更改需要花费大量时间 我认为服务器内存太多,而且效率不高POCO
- 我想在一个事务中保存以下实体的相关图表
POCO
s李>
IoC容器的DbContext
s的生存期李>
有没有办法生成(或更改)总图(在客户端),然后将其传递到DbContext
中保存李>
有没有实现这种情况的示例
对于列表中的第3项,您可以在此处投票支持更好地使用断开连接的实体:(您可以查看此处讨论的第三方解决方案)