首先是实体框架代码 - 是不是要创建表?

时间:2016-05-18 10:43:20

标签: c# entity-framework entity-framework-6 dnx

MUCH 对实体框架(针对DNX 4.5.1)的研究之后,我不断得出相同的结论:当使用代码优先方法时,EF应该创建任何不存在的表。

的DbContext:

public class AccountReadContext : DbContext
    {
        public AccountReadContext(DbContextOptions options)
        : base(options)
        {}

        public DbSet<AccountRead> AccountReads { get; set; }  
    }

数据库提供商:

public void AddAccountRead(AccountRead reads)
        {
            _dbContext.AccountReads.Add(reads);
            _dbContext.SaveChanges(); //System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'AccountRead'
        }

我知道为什么发生了这种情况(表格遗漏了)。我无法弄清楚的是如何让代码优先做它并创建表?

3 个答案:

答案 0 :(得分:0)

您必须在项目中启用代码优先迁移。在PowerShell窗口(包管理控制台)中,您可以发出命令:

  

启用-迁移

然后,每次更新POCO对象,添加新表等时,都需要输入:

  

...添加-迁移

这里有一些文件: https://msdn.microsoft.com/en-us/data/jj591621.aspx

答案 1 :(得分:0)

默认情况下应启用自动迁移。如果禁用它们(AutomaticMigrations = false),则应手动运行 Update-Database 命令,或将Database Initializer设置为MigrateDatabaseToLatestVersion&lt;,&gt;

答案 2 :(得分:0)

最后,我不得不在项目的根文件夹中使用EntityFramework命令:

Update database:
dnx ef database update -c "AccountReadContext"

Add / Remove columns (specify column name):
dnx ef migrations add Reading -c "AccountReadContext"
dnx ef database update -c "AccountReadContext"

This provides a bit more info