EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一)
前言#
- 本系列源自对EF6 CodeFirst的探索,但后来发现在自己项目中构建的时候遇到了一些问题以及一些解决方法,因此想作为一个系列写下来。
- 本系列并不是教你怎么做架构设计,但可以参照一下里面的方法。本系列只是为了说明这些技术应用而构建的一个简单的解决方案。EF系列大都采用DDD的构建方式,这也是目前最流行的。如果你想对DDD有所了解,可以在园子当中寻找那些DDD方面的文章或者是在CodePlex上下载相关的DDD设计模型源码进行研究。
- 如果你是一个新人或者是没有用过EF6 CodeFirst的人,那么本系列将带你一步一步构建自己的解决方案平台。如果你是对EF有研究的人,那么不正之处,欢迎指教。
系统场景#
当我们对系统进行设计的时候,往往会考虑到它的权限设计,本系列就针对一个简单的权限场景来对总个系统进行设计和技术要点的实现。
- 需求列表
1. 系统具备管理员和操作员的角色; 2. 一个系统用户只能属于某个角色; 3. 一个角色用户可以操作多个业务模块,一个业务模块可以被多个角色用户操作; 4. 业务模块和角色用户之间可以进行配置; 5. 系统日志维护 6. 系统字典维护 |
- UML用例图
- PD数据库设计
- EF实体对象模型
- 系统框架搭建
- Common 系统通用类库层:主要存放一些系统的需要的通用访问的帮助类问价,比如本示例采用的主键编码为长整形的编码规则类、用户密码加密和解密的帮助类等;
- Abstract领域抽象层:也就是我们常说的接口层,主要是定义业务实现方法的接口;
- Concrete领域实现层:对领域业务的实现类以及领域模型的构建;
- Entities实体层:存放领域模型的实体;
- Mapper实体映射层:EF对实体的关系配置后的映射,本示例采用的是EF Fluent API的方式来对实体在数据库中的映射做详细配置;
- Initializer初始化数据层:由于数据库是通过微软的ORM框架Entity Framework映射生成的,所以在数据库初始化时,我们可以添加我们所需要的初始化数据;
- Factory 工厂反射层:主要用于服务层调用领域实现层的解耦操作;
- Service服务层:注意这里只是一个示例,具体可以使用WCF、Web Api、WebService来作为服务层,本示例就用WebService来做一下说明;
- Web展现层:主要是利用Asp.net mvc4+EasyUI来作为前端页面的效果展示和操作。
注意:解决方案文件夹在本地磁盘不会自动生成,这里我们手动建立一下,然后把各自的工程建立在对应的文件夹里面。
- 示例环境
- 系统:Windows 7 X64 旗舰版
- 开发工具:Visual studio 2013 旗舰版
- 数据库:Sql Server 2008 r2
- ORM框架:Entity Framework 6以上版本
- IOC容器:Ninject 3.2.0.0
- 展现层:Asp.net MVC4 +EasyUI 1.4.3
- 代码管理:Visual Studio Online(TFVC)
注意:这是我本机的版本,大家的开发环境可能有所不同。Visual studio只要能支持Visual Studio Online(TFVC)的就行,
后面会讲到如何使用。数据库可以是2005 2008 2012 版本的应该都可以支持映射。EasyUI可以是1.3.5以上的版本。Asp.net
MVC采用的是4的版本,Ninject就用它里面自带的版本呢。
系统目标#
- 采用EF6完成业务实体到数据库表的完整映射
- 利用Ninject和工厂反射模式完成对接口和实现类的解耦,减少依赖
- 实现各模块的基本操作和页面设计
- 实现不同角色用户登录系统后可以对不同的页面模块进行操作
备注#
作者:wangweimutou
出处:https://www.cnblogs.com/wangweimutou/p/4649125.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
01.ASP.NET MVC
, 05.WEB前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?