今天总结下如果MSSQL的数据库如何使用EF Code First
第一步:建立实体类
例如:用户类(测试用,没写那么多,只有简单的创建时间,用户昵称和唯一标识),这个类是数据库中的表映射到C#中的对象,所以可以说是C#中对象,也可以说是数据库中的表。
public class UserTable
{
public string Id { get; set; }
public DateTime BuildTime { get; set; }
public string NickName { get; set; }
}
第二步:建立数据库上下文
创建类DbModels,也可以直接创建ADO.NET 实体数据模型,然后选择空CodeFirst模型
内容如下:
public class DbModels : DbContext
{
//构造方法,base("这里是使用的ConnectString"),设置连接字符串
public DbModels() : base("name=DbModels")
{ }
public virtual DbSet<UserTable> User { get; set; }
}
第三步:配置文件
entityFramework节点下,需要设定预处理程序
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
connectionStrings节点下,设定预定的连接字符串(这是一个默认的,使用的VS自带的本地数据库,可以修改为服务器或自己安装的数据库实例)
<add name="DbModels" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=ORM.EntityFramework.SqliteCodeFirst.DbModels;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
第四步:可以在程序的入口载入初始数据,读取数据,添加数据或修改数据后,注意使用SaveChanges()方法保存数据到数据库
扩展:数据库的初始化,可以在数据库上下文的构造函数中调用Database.SetInitializer()来设置数据库初始化的行为
1.数据库不存在时重新创建数据库
Database.SetInitializer(new CreateDatabaseIfNotExists<DbModels>())
2.每次启动应用程序时创建数据库
Database.SetInitializer(new DropCreateDatabaseAlways<DbModels>())
3.模型更改时创建数据库
Database.SetInitializer(new DropCreateDatabaseIfModelChanages<DbModels>())
4.从不创建数据库
Database.SetInitializer(null)