要求:

引用EntityFramework

SqlServer数据库

一个C#项目

项目结构:

将实体模型映射到数据库,只需要在下面三个地方进行配置、

实体类(数据库映射)

DbContext上下文(存储库)

数据库连接字符串配置

1、实体类(数据库映射)

每个数据库对象在程序中都有一个类可以对应。
需要的了解的知识:类和数据库映射相关的知识。
例子:
一个数据库映射类

public class TModel
{
[Key]//标记主键
public int ID{get;set;} public string Name{get;set;} [NotMap]//因为直接把Model和数据库映射Model作为同一个,所以存在部分差异,这个字段不需要保存,所以配置为不映射到数据库
public string ShowInfo{get;set;}
}

2、实现 DbContext

DBContext 实现了工作单元模式和存储库模式,也就是说这个可以代替一个表一个Repository的方式,直接在DbContext中定义表结构就可以直接使用了。

数据库生成功能就是在该类中实现。
工作单元模式:对象可以在程序中更改,等到SaveChange 时才保存到数据库。
把一系列业务对象的持久化由工作单元实现类统一在一个类管理,而不用为每个数据库对象建一个仓储层。

例子:
定义一个上下文。

public class TestContext : System.Data.Entity.DbContext
{
public TestContext() : base("LogStr")//LogStr为web.config中的链接字符串。有多种设置链接的方式。
{
       //设置初始化方式,可以使用的策略类有:
       //CreateDatabaseIfNotExists 如果不存在数据库,建立数据库;
       //DropCreateDatabaseAlways 总是重建数据库;
       //DropCreateDatabaseIfModelChanges 如果定义的模型发生改变,重建数据库。
       //不设置该项,当模型发生改变时,查询时会报错。当数据库不存在时,创建数据库
Database.SetInitializer(new CreateDatabaseIfNotExists<TestContext>());
  } //使用属性的方式-映射的数据表对象
  public DbSet<TModel> TModels { get; set; } //自定义映射关系,可省略,常用于各种骚操作,一个发挥想象力的地方。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //常见的操作
    //1、以反射的信息添加表,如某一程序集中的类,动态添加映射到数据库中,可以不使用属性。
    //2、自定义映射模式,如外键关系等映射模式,属性名和表名的映射关系。
}
}

  

例子:
手动重建数据库。

using (TestContext logContext = new TestContext())
{
  logContext.Database.Initialize(true);
}

3、Web.Config或App.config中配置链接字符串

最新文章

  1. ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
  2. [WP8.1UI控件编程]Windows Phone动画方案的选择
  3. APP定制开发:APP软件开发的语言和开发环境
  4. jQuery对象与DOM对象
  5. 瀑布流布局--jQuery写法
  6. 自动化分析工具PSSDIAG
  7. 好吧,如果一定要RESTFUL的DJANGO
  8. WordPress插件制作教程(八): 最后总结
  9. A类型物料必须为装配拉式,供应子库为B仓
  10. C#记录日志、获取枚举值 等通用函数列表
  11. ASP.NETwindows身份验证详细步骤-域验证登录
  12. numpy库常用基本操作
  13. cache缓存的BUG
  14. 44)django-环境变量设置
  15. 对比 PHP 中 new static() 与 new self()
  16. golang 查看代码调用关系图
  17. python里实现DSL
  18. 【翻译&amp;转载】shader的导数函数介绍
  19. 洛谷P1801 黑匣子
  20. Python中的魔法函数__repr__和__str__的实质性区别

热门文章

  1. sklearn中的model_selection模块(1)
  2. 【BZOJ】1251: 序列终结者
  3. cms替换主页
  4. 源自人脑的神奇算法 -- 读《How to make your own neural network》有感
  5. Laravel 5.4 migrate时报错: Specified key was too long error
  6. phpmywind调用方法大全
  7. OSCP考试回顾
  8. git服务器的简单搭建
  9. 架构师必须搞懂DNS【转】
  10. java处理金证中登查询图片二进制流问题