从Entity Framework的实现方式来看DDD中的repository仓储模式运用
一:最普通的数据库操作
static void Main(string[] args)
{
using (SchoolDBEntities db = new SchoolDBEntities())
{
db.Students.Add(new Student() { StudentName = "nihao" });
db.SaveChanges();
}
}
domain 和 db 是怎么操作。。。
DbSet<Student> 集合 【用于存放集合】 从名称中可以看出,是一个叫做Student Set的一个集合。。
可以看出,是一个叫做实体的仓库。。。
SaveChanges() 模式提交,会从两个仓储中获取添加的domain entity,然后整体性的提交数据库。。。
执行操作之前,会开启一个transaction。。。两条insert之后, commit transction。。
UI
BLL
DAL
DBSet => Repository
DbContext => unitofwork
//
// 摘要:
// Interface implemented by objects that can provide an System.Data.Entity.Infrastructure.IObjectContextAdapter.ObjectContext
// instance. The System.Data.Entity.DbContext class implements this interface to
// provide access to the underlying ObjectContext.
public interface IObjectContextAdapter
{
//
// 摘要:
// Gets the object context.
ObjectContext ObjectContext { get; }
}
我们在ef4.0,4.1的时候,用的都是objectContext。。。 code first出现之后,都用DBContext进行了封装。。。
最新文章
- 在jexus下如何简单的配置多站点
- 实例讲解Nginx下的rewrite规则
- 【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
- 使用普通Windows服务创建Quartz.Net服务项目
- UVA 11384 Help is needed for Dexter(问题转化 递归)
- 在ubuntu 10.04下编译ffmpeg
- SQLserver查询数据类型为ntext是空或NULL值的方法
- POJ1182 食物链 【并查集变种】
- 关于LCD的分屏与切屏 Tearing effect
- android模拟器网络设置(局域网)
- 《Android进阶》之第四篇 ViewPagerIndicator的使用
- 跨站请求伪造攻击 CSRF
- VS2015调试ArcMap Add-in插件提示尝试运行项目时出错,无法启动程序“路径\arcmap.exe”
- Spring Boot实现热部署
- item 5: 比起显式的类型声明,更偏爱auto
- Linq测试/查看工具——LinqPad
- Leetcode 124 *
- spket插件安装并设置JQuery自动提示(转)
- TCP三次握手,四次分手
- Hexo Next配置百度分享、加入动态背景、接入网页在线联系功能、页脚增加统计功能、添加gitment、添加热度、阅读量排行