zoukankan      html  css  js  c++  java
  • Entity Framework 6 Code First的简单使用和更新数据库结构

    一、安装Entity Framework 6

          在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装

      

      

    二、配置数据库连接

      在App.config中加入数据库连接字符串的配置

    <connectionStrings>
        <add name="DBContext" connectionString="data source=127.0.0.1;uid=sa;pwd=123;database=test;" providerName="System.Data.SqlClient"/>
     </connectionStrings>

    三、DbContext及实体类

        public class MyContext:DbContext
        {
            public MyContext() : base("DBContext") { }
            public DbSet<Product> Products { get; set; }
        }
    
    
        public class Product
        {
            [Key]
            public string Code { get; set; }
    
            public string Name { get; set; }
    
            public int Quantity { get; set; }
        }

    四、简单测试

            static void Main(string[] args)
            {
                using (MyContext db = new MyContext())
                {
                    var product = new Product { Code = "1", Name = "p1" };
                    db.Products.Add(product);
                    db.SaveChanges();
                }
            }

    五、更新数据库结构

      1.点击视图->其他窗口->程序包管理器控制台

      

      2.输入Update-Database

       这时会出现“No migrations configuration type was found in the assembly 'EF6CodeFirst'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).

      3.输入Enable-Migrations

        命令执行成功后会在项目中自动添加Migrations,目录里有一个Configuration.cs,打开Configuration.cs把AutomaticMigrationsEnabled修改为true

      4.再次尝试执行Update-Database

       命令能正确执行

      5.我们尝试删除Name字段,然后执行Update-Database

         由于Name字段有数据,命令执行失败,显示如下错误:Automatic migration was not applied because it would result in data loss

         这个时候能用Update-Database -Force来强制更新数据库,但这将造成数据丢失

    六、总结

      Entity Framework 6 Code First能使数据库访问和实体操作代码变得很简洁,但如果项目开发过程中需要频繁的更改数据库就要考虑清楚才使用了。

  • 相关阅读:
    LeetCode题解(14)--Longest Common Prefix
    LeetCode题解(12)--Integer to Roman
    LeetCode题解(13)--Roman to Integer
    LeetCode题解(9)--Palindrome Number
    LeetCode题解(8)--String to Integer (atoi)
    LeetCode题解(7)--Reverse Integer
    LeetCode题解(6)--ZigZag Conversion
    从并发和索引说说innodb和myisam的区别
    thrift基本概念和实例
    fastcgi+lighttpd+c语言 实现搜索输入提示
  • 原文地址:https://www.cnblogs.com/DCLi/p/EFCodeFirst.html
Copyright © 2011-2022 走看看