zoukankan      html  css  js  c++  java
  • 在vs2010里使用EF4.3的Code First个人使用笔记

    安装EF4.3

    工具->程序包管理器->程序包管理器控件台(需要NuGet更新到最新)

    键入安装EF的命令 Install-Package EntityFramework (升级EF的命令'Update-Package EntityFramework')

    由实体生成/更新数据库表

    1.编写实体类

    namespace TestDb
    {
        public class TestDbContext : DbContext
        {
            //public TestDbContext() : base("TestDbContext") { }//TestDbContext是配置里的数据库连接名称,默认为DbContext的名字:TestDbContext
            public DbSet<Book> Books { get; set; }
        }
    
        public class Book
        {
            public int BookId { get; set; }
            [MaxLength(200)]
            public string Title { get; set; }
            public double Price { get; set; }
            [MaxLength(60)]
            public String Note5 { get; set; }
            [NotMapped]
            public String NotMappedTest{ get; set; }
        }
    }

    2.在程序包管理器控件台启用迁移 Enable-Migrations (如果已经存在需要加上 -Force),常用部分参数如下(get-help Enable-Migrations -detailed 获取帮助):

    -ProjectName:""   指定项目

    -Force   如存在则覆盖迁移配置(已经运行过Enable-Migrations生成了配置)

    3.新建迁移点 Add-Migration Book-ISBN (Book-ISBN是任意一个名称标记,迁移点名称),常用部分参数如下(get-help Add-Migration -detailed 获取帮助):

    -ProjectName:"" 指定项目

    -Force 如存在则覆盖

    4.更新到数据库 Update-Database 或者 Update-Database –Verbose  (Verbose显示详细信息),常用部分参数如下(get-help update-database -detailed 获取帮助):

    -ProjectName:""   指定项目

    -Script   生成迁移sql语句,如 Update-Database -Script 生成更新的迁移sql,不执行挂起的操作

    -SourceMigration:"开始迁移点"   只能与-Script一起使用,如 Update-Database -Script -SourceMigration:$InitialDatabase 表示生成全部的迁移sql

    -TargetMigration:"结束迁移点"  回溯到某个迁移点,“0”表示回到空数据库

    -ConnectionStringName:"配置里的数据库连接名称"   指定数据库,这样不用修改代码 就可实现更新到新的数据库

    生成的迁移文件

    当运行Add-Migration Book-ISBN命令后生成的迁移程序如下:

    namespace EdmDb.Migrations
    {
        using System.Data.Entity.Migrations;
        public partial class reName3 : DbMigration
        {
            public override void Up()
            {
                AddColumn("Books", "Note3", c => c.String(maxLength: 60));
                AlterColumn("Books", "Title", c => c.String(maxLength: 200));
                DropColumn("Books", "Note2");
                Sql(this.Des("Books", "Title", "你好"));//手动添加,增加数据库注释
            }
            public override void Down()
            {
                AddColumn("Books", "Note2", c => c.String(maxLength: 60));
                AlterColumn("Books", "Title", c => c.String());
                DropColumn("Books", "Note3");
            }
        }
    }

    Des方法,添加数据库注释,这样做还要手动添加注释的语句,如果可以修改Add-Migration的处理方式就好了,知道的请留言

        public static class DbMigrationExt
        {
            public static string Des(this DbMigration mig,string tableName,string colName,string DesStr)
            {
                string sqlStr = "EXEC sys.sp_addextendedproperty @name=N'MS_Description'"
                    + ", @value=N'" + DesStr + "' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE'"
                    + ",@level1name=N'" + tableName + "', @level2type=N'COLUMN',@level2name=N'" + colName + "'";
                return sqlStr;
            }
        }

    注意删除数据库所有表要重建的时候,需要删除系统表__MigrationHis,__MigrationHis表记录了迁移的日志,Add-Migration是检查__MigrationHis确认数据库状态的

     

  • 相关阅读:
    go语言笔记——append是内置的函数!!!new是一个函数!!!调试可以使用闭包,本质上是print调试,尼玛!
    go语言笔记——defer作用DB资源等free或实现调试
    提高mysql查询效率的六种方法
    无线网络wifi (WPA/WPA2)密码破解方法
    wifi密码破解方法总结(含破解软件下载链接)
    linux 创建账户
    vim中设置tab的长度的方法
    JAVAC 命令使用方法
    Linux环境下编译并执行ava helloworld程序
    java hadoop file system API
  • 原文地址:https://www.cnblogs.com/ark/p/2613029.html
Copyright © 2011-2022 走看看