Entity Framework code first 基本操作
0.准备工作
nuget添加entity framework程序集到项目中;
1.正式开始
配置文件添加连接字符串:
<connectionStrings> <add name="CmsConnection" connectionString="data source=.;database=CMS;uid=sa;pwd=********;" providerName="System.Data.SqlClient"/> </connectionStrings>
添加实体模型:
namespace Model { public class Class { public int ClassId { get; set; } public string ClassName { get; set; } public string Description { get; set; } public DateTime? CreateDateTime { get; set; } public DateTime? UpdateDateTime { get; set; } } }
添加上下文文件:
public class MyDbContext : DbContext { public MyDbContext() : base("CmsConnection")//配置文件字符串名称 { } public DbSet<Model.Class> Classes { get; set; } }
添加执行代码:
/// <summary> /// 初始化最简单的单表操作 /// </summary> private static void InitSingleTable() { Model.Class classes = new Class() { ClassId = 1, ClassName = "1020561", Description = "desc", CreateDateTime = DateTime.Now, UpdateDateTime = DateTime.Now }; MyDbContext context = new MyDbContext(); context.Classes.Add(classes); context.SaveChanges(); Console.WriteLine("ok"); Console.Read(); }
运行结果:
注意:
1、数据库名称:为配置文件中连接字符串的数据库名称;
2、数据库表名称:为实体名称的复数形式;
3、以id结尾的字段作为主键,若为int类型,则自动增长;
4、字段类型:string转换为nvarchar(max)、bool转换为bit;
5、生成表:__MigrationHistory,用于记录数据库表结构迁移情况;
重建表结构:
//Database.SetInitializer(new CreateDatabaseIfNotExists<MyDbContext>());//默认 //Database.SetInitializer(new DropCreateDatabaseAlways<MyDbContext>());//始终全部重构 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDbContext>());//检测到模型发生变化时候重构 MyDbContext context = new MyDbContext(); context.Database.Initialize(true);
问题:每次重构的时候,必须要关闭数据库连接,才能执行成功;/(ㄒoㄒ)/~~
我们要走的路,有着太多的不确定,他人的一句劝诫,自己的一个闪念,偶尔的得与失,都时刻在改变着我们命运的走向。世事难以预料,遇事无须太执,谁都无法带走什么,又何必纠结于某一人、某一时、某一事。只有看开了,想通了,才能随缘、随性、随心而为,不急不躁,不悲不欢,不咸不淡。