EF-CodeFirst模式的简单使用

释放双眼,带上耳机,听听看~!

要求:

引用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 实现了工作单元模式和存储库模式
数据库生成功能就是在该类中实现。
工作单元模式:对象可以在程序中更改,等到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; }
} 

 

例子:
手动重建数据库。

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

 

 

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

 

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

Linux - 挂载磁盘 + 通过LVM动态实现磁盘的动态扩容

2020-11-9 4:04:04

随笔日记

新手向:从不同的角度来详细分析Redis

2020-11-9 4:04:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索