ef4.4 code first数据库新增时 初始化表数据不成功
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ef4.4 code first数据库新增时 初始化表数据不成功相关的知识,希望对你有一定的参考价值。
参考技术A seed函数内容添加的时候,你的codefirst代码没有更新,所以Seed函数没有被调用。
Migration
只检查数据库的机构有没有发生变化,如果发生了变化,它会调用Seed方法重新初始化数据库。但是如果数据库已经存在而且与你的当前代码一致,Migration就不会再调用seed方法了。
EF Code First 初始化数据库
EntityFramework 在用过一段时间之后,只要是.net环境,就难免不想起它。它留给我手指的记忆强迫我继续使用。。。
首先新建一个类库,然后新建DataContext类,这个类是主要用来对数据库操作的。(必须要引用EF)
public class DataContext:DbContext { public DataContext() :base("default") { } public DbSet<UserInfo> UserInfo { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Add(new DecimalPrecisionAttributeConvention()); base.OnModelCreating(modelBuilder); } public int Commit() { return SaveChanges(); } }
然后如果类库跟Web程序隔离了,那么就需要配置web.config而不是Appconfig
<configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" /> </configSections> <connectionStrings> <add name="default" connectionString="Data Source=.;Initial Catalog=Demo;User ID=sa;Password=123456;" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
还有一个实体的结构,BaseEntity里面是定义了一个Guid,看自己需要吧,商业项目都需要guid的。
public class UserInfo: BaseEntity { public string UserName { get; set; } public string Password { get; set; } }
然后在程序包管理控制台里,输入 Enable-Migration,出现如下提示:
大概就是打开了数据迁移,然后
add-migration initTable
会新增一个migration,就是数据迁移类。每次对数据库修改后都要Add-migration,对数据库的更改记一次版本,来达到版本控制的目的。
最后提交到数据库
update-database
数据库显示已创建表
以上是关于ef4.4 code first数据库新增时 初始化表数据不成功的主要内容,如果未能解决你的问题,请参考以下文章