asp.net-mvc-3 – 实体框架插件架构推荐
我正在尝试使用区域和依赖注入构建模块化的ASP.NET MVC应用程序.该应用程序目前包括以下项目:
> Framework.Contracts(用于身份验证服务,授权,日志记录的接口) 每个插件都包含一个MVC Area项目,合同和服务实现: > EmployeesPlugin.Contracts(IEmployeesService的接口) 我想使用Entity Framework Database First或Model First(因为我必须连接现有数据库).我的问题是我不知道如何松散地耦合我的实体.我不想将它们放入一个共享的DatabaseLayer项目中.相反,我想为Framework项目定义中心实体(User,Settings,LogEntries,…)以及为每个插件定义其他实体(如Employee,Company). 阅读ORM Architecture: One or Multiple Models (Entity Framework)后,我考虑创建多个模型(即多个数据上下文).实际上我不喜欢冗余代码的想法. 我想过创建暴露每个实体属性的接口.这些接口将按插件放入项目中.就像IEmployee公开FirstName和LastName一样.然后我开始创建一个IEmployeeRepository来返回并创建,编辑和删除Employees.但是,在仅公开IEmployee而没有具体类时,创建员工不起作用. 另一个问题是实体Employee包含对其他项目/插件中的实体的引用.让我们说一个员工主持了许多项目.因此,我想创建一个没有项目引用的通用IEmployee接口和一个包含对项目的引用的IEmployeeProjects接口.这样我就可以在一个中央数据库层项目中创建一个类Employee,它实现了IEmployee添加`IEmployeeProjects: public class Employee : IEmployee,IEmployeeProjects { // From IEmployee interface public string FirstName { get; set; } public string LastName { get; set; } // From IEmployeeProject interface public virtual ICollection<Project> Projects { get; set; } } 问题是我不知道如何使用Entity框架将各种东西融合在一起. 解决方法
你通过消除它们之间的任何硬关系来创造松散的偶然.相反,只需使用ID来引用其他实体.这也意味着每个插件都使用它自己的DbContext.
然后在每个插件中使用存储库来加载引用的实体.这也意味着每个插件必须在一个单独的程序集中定义它们的存储库接口,这些接口可以被其他插件使用. 我还通常创建一个核心对象,在其中我定义核心公开的所有entites,服务和存储库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在IIS 7.5上调试经典的asp页面Visual Studi
- asp.net – Grid.SelectedRow.Cells.Item(1).Text.ToString
- ASP.NET主题 – 应该使用它们吗?
- asp.net-mvc – 无法解析符号’ViewBag’
- asp.net中XML如何做增删改查操作
- asp.net-mvc – 如何在backbone.js中保存模型集合?
- 将变量从ASP.net传递给JavaScript
- asp.net-mvc – 尝试在asp.net mvc中提交富文本编辑器内容并
- asp.net-mvc – Web Api安全客户端和用户
- ASP.NET重写自定义错误不发送内容类型头
- asp.net-mvc – MVC EditorFor里面的另一个Edito
- asp.net – 的目的
- asp.net – GridView分页 – 第一,最后,下一个,上
- asp.net-mvc – mvc razor @helper可以返回非编码
- ASP.NET AJAX – AJAX控件工具包 – jQuery – 哦
- ASP.NET CheckBoxList DataBinding问题
- asp.net-mvc – MVC3 – RenderSection中的Rende
- asp.net-mvc – EF实体与服务模型与查看模型(MVC
- asp.net – 在页面生命周期的PreInit事件中创建动
- asp.net-mvc – 为什么Nant不与TeamCity合作?