在 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'
}
我知道为什么发生了这种情况(表格遗漏了)。我无法弄清楚的是如何让代码优先做它并创建表?
答案 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"