EF-CodeFirst模式的简单使用

要求:

引用EntityFrameworkweb

SqlServer数据库数据库

 一个C#项目ide

 

项目结构:

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

实体类(数据库映射)spa

DbContext上下文(存储库)code

数据库链接字符串配置对象

 

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

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

public class TModel
{
    [Key]//标记主键
    public int ID{get;set;}

    public string Name{get;set;}

    [NotMap]//由于直接把Model和数据库映射Model做为同一个,因此存在部分差别,这个字段不须要保存,因此配置为不映射到数据库
    public string ShowInfo{get;set;}
}

 

二、实现 DbContext

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

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

例子:
定义一个上下文。

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)
   {
    //常见的操做
    //一、以反射的信息添加表,如某一程序集中的类,动态添加映射到数据库中,能够不使用属性。
    //二、自定义映射模式,如外键关系等映射模式,属性名和表名的映射关系。
   }
} 

  

 

例子:
手动重建数据库。

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

 

 

三、Web.Config或App.config中配置连接字符串

相关文章
相关标签/搜索