项目右键 管理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>