code First

项目右键 管理NuGet 程序包 ; 添加EntityFramework ef框架

编写BookDB类;继承DbContext

public  class BookDB:DbContext
    {
        public BookDB()
        {
            //初始化自动迁移 //当实体类发生变化时自动映射到数据库(可能会造成数据库丢失)
            Database.SetInitializer(
                new MigrateDatabaseToLatestVersion<BookDB, Configuration>()
                );
        }
        public DbSet<Book> Book { get; set; }
        //默认生成的表名为类型的复数形式,表名+s
        protected override void OnModelCreating(DbModelBuilder mode1Builder)
        {
            mode1Builder.Conventions.Remove<PluralizingTableNameConvention>();
        }
    }
    public class Configuration : DbMigrationsConfiguration<BookDB> 
    {
        public Configuration()
        {
            //开启自动迁移
            AutomaticMigrationsEnabled = true;
            //迁移的时候是否允许数据丢失
            AutomaticMigrationDataLossAllowed = true;
        }
    }

//
Configuration自定义类

 Book类

 public class Book
    {
        public int BookID { get; set; } //创建主键 加[Key] 或者  字段名是类名+ID  或者 ID开头
        [StringLength(50)]
        public string BookName { get; set; }
        [StringLength(50)]
        public string Author { get; set; }
        public decimal Price { get; set; }

    }

配置文件添加

<connectionStrings>
<add name="BookDB" connectionString="server=.;uid=sa;pwd=123321;database=xxx" providerName="System.Data.SqlClient"/>  xxx为数据库名字
</connectionStrings>

  <add name="MovieDBContext" connectionString=" Data Source=.; Initial Catalog=MovieDB; Persist Security Info=True; User ID=test;Password=. " providerName="System.Data.SqlClient"/> 

BookDB entiy = new BookDB();  //创建对象不自动创建数据库
 int Count = entiy.Book.Count(); //使用才创建数据库

出错原因是因为继承了Context

    public class BookDBContext : DbContext //如果继承自Context 不会有savecharge方法
    {
        public DbSet<Book> Books { get; set; } //必须引用EntityF才能使用(在管理Nuget程序包或第三方)
    }
在configuration添加连接字符串
<configuration>
     <!--数据库名为BookDB name名字必须和上下文一致,否则不会创建数据库-->
  <connectionStrings>
    <add name="BookDBContext" connectionString="server=.;uid=test;pwd=.;database=BookDB" providerName="System.Data.SqlClient"/> 
  </connectionStrings>
</configuration>
原文地址:https://www.cnblogs.com/enych/p/7997754.html