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数据库新增时 初始化表数据不成功的主要内容,如果未能解决你的问题,请参考以下文章

EF Code First 数据迁移

Code-First 数据库初始化策略

译第31节---数据库初始化策略

Code First 迁移

EF Code First 未初始化数据库

EF Code-First 学习之旅 数据库初始化