c# - 尝试创建新表时对象名称无效

标签 c# sql sql-server entity-framework

昨天开始使用 EF6,我已经很沮丧了。

无论如何,据我的研究表明,如果数据库不存在,EF 可以创建它,也可以创建表。因此,我将连接字符串传递给 DbContext,如下所示:

public CampaignDbContext() : base("Data Source=xx;Initial Catalog=NewTestDb;User ID=xx;Password=xx;")
{ }

我的模型和整个 DbContext 类很可能与这里无关,所以这就是我不添加代码的原因。无论如何,我的模型类称为 Campaign 并且在 DbContext 类中,我已经声明了显而易见的:

public DbSet<Campaign> Campaigns { get; set; }

//Also added this
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   Database.SetInitializer<CampaignDbContext>(null);
   base.OnModelCreating(modelBuilder);
}

现在,根据我的测试方法,当我填充 Campaigns DbSet 并调用时:

CampaignDbContext.SaveChanges();

我得到了错误:

Cannot open database "NewTestDb" requested by the login. The login failed

再一次在我的编程生涯中,我震惊了。如果在来自代码隐藏的 SSMS/示例 sql 连接中,在连接字符串(在 dbcontext 类中)中传递的相同凭据工作正常,但在此处不起作用。但是当我从 SSMS 手动创建 NewTestDb 时,连接成功了。现在,当我调用 CampaignDbContextSaveChanges 方法时,我得到:

Invalid object name 'dbo.Campaigns'

我已经阅读了大量关于 SO 的帖子,没有发现我的代码有任何问题。有人可以指出我在哪里遗漏/我做错了什么吗?

附言我是 EF 的新手。

最佳答案

感谢bolkay .我想到了。结果我不得不从包管理器控制台运行这些特定命令:

enable-migrations
add-migration InitialMigration
update-database

现在,一切正常! 干杯!

关于c# - 尝试创建新表时对象名称无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53968554/

相关文章:

c# - 无法读取配置部分 'system.serviceModel',因为它缺少部分声明

php - "multiplying"MySql 记录有什么方法可以测试服务器上的大型数据库吗?

sql - 查找sql​​ 2000中ntext列类型数据的长度

sql-server - WHERE IN (SELECT NonExistingColumnName) 导致意外行为

sql-server - 什么时候在SSIS中制作多个包或数据流任务?

c# - SQL Server CE 数据库连接问题

c# - 您的计算机中缺少 Rlapack.dll - c# 和 R

C# 和 WPF,SaveFIleDialog 抛出异常

mysql - 按时间排序,仅显示唯一的

sql - SPARQL : Find Difference and Common Elements in 2 Sets