zoukankan      html  css  js  c++  java
  • 使用EF CodeFirst 创建数据库

    EntityFramework

    在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项

    来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模型了,选择它,然后根据设计好的数据库,就会生成一个edmx文件,和一个数据库上下文,然后我们就可以不用写sql也可以愉快的访问数据啦,但是这种方式对于经常变动的数据库结构,更新起来经常会有一些bug,原数据库删除的字段和结构,在edmx中更新模型是需要手动删除的

    CodeFirst

    CodeFitst的出现给.net开发提供了一种新的方式,这种以代码优先的数据库模型更能适应需求的变更和产品迭代开发,接下来就以一个简单的实例来看一下怎么使用它吧

    1.在自己的解决方案下添加一个类库项目Domain,然后添加一个实体

        public class User
        {
            public int Id { get; set; }
            public int UserName { get; set; }
            public string Password { get; set; }
        }

    2.添加数据库上下文

        public class DBContext:DbContext
        {
            public DBContext()
                : base("Blog")
            {
    
            }
            public DbSet<User> Users { get; set; }
        }

    3.配置数据库连接字符串

    需要注意的事,连接字符串需要写到启动项目中,如果当前启动项目是Domain,那它就是以Domain的App.comfig为准,如果是web项目就是Web.config

    一般情况下两个都写一下吧

    <connectionStrings>
    <add name="Blog" connectionString="server=.;database=Blog;uid=sa;pwd=123" providerName="System.Data.SqlClient"/>
    </connectionStrings>

    4.通常这个时候只需要运行你的程序,系统就会自动创建数据库了,还有一种方法就是使用migration创建你的数据库

    打开程序包管理控制台,注意默认项目是Domain

    PM> Enable-Migrations

    你会发现Domain下多了一个Migrations文件夹,并且有一个名称为Configuration的类(用于更新)

    打开程序包管理控制台

    PM> Add-Migration Init

    这个时候,它会根据DBContext上下文下的模型来和以往的版本比较,并且生成更新文件,此时没有以往版本,所以更新内容如下

    namespace Domain.Migrations
    {
        using System;
        using System.Data.Entity.Migrations;
        
        public partial class Init : DbMigration
        {
            public override void Up()
            {
                CreateTable(
                    "dbo.Users",
                    c => new
                        {
                            Id = c.Int(nullable: false, identity: true),
                            UserName = c.Int(nullable: false),
                            Password = c.String(),
                        })
                    .PrimaryKey(t => t.Id);
                
            }
            public override void Down()
            {
                DropTable("dbo.Users");
            }
        }
    }

    Up用于更新,Down用于回退这个很好理解

    PM> Update-database

    打开Sql Server(如果用的localDb就在localDb中查看)查看数据库

  • 相关阅读:
    Oracle FGA审计记录的清理步骤
    UVa11488-Hyper Prefix Sets(trie树)
    配置Log4j(非常具体)
    poj1190生日蛋糕
    zju1610Count the Colors
    【例9.3】求最长不下降序列
    P1364 医院设置
    P1629 邮递员送信
    P1476 休息中的小呆
    P1330 封锁阳光大学
  • 原文地址:https://www.cnblogs.com/cheesebar/p/6248311.html
Copyright © 2011-2022 走看看