c# - 尝试创建新表时对象名称无效
问题描述
昨天开始使用 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();
我得到了错误:
无法打开登录请求的数据库“NewTestDb”。登录失败
在我的编程生涯中,我再次感到震惊。如果在来自代码隐藏的 SSMS/示例 sql 连接中,在连接字符串中传递的相同凭据(在 dbcontext 类中)可以正常工作,但这在这里不起作用。但是当我NewTestDb
从 SSMS 手动创建时,连接成功。现在,当我调用 的SaveChanges
方法时CampaignDbContext
,我得到:
无效的对象名称“dbo.Campaigns”
我已经阅读了大量的 SO 帖子,并且没有发现我的代码有任何问题。有人能指出我在哪里失踪/我做错了什么吗?
PS我是EF的新手。
解决方案
感谢博尔凯。我想到了。原来我必须从包管理器控制台运行这些特定命令:
enable-migrations
add-migration InitialMigration
update-database
现在,一切正常!干杯!
推荐阅读
- react-native - 如何在同一页面中从 React-native 中的多个 api 端点获取数据
- javascript - 使用 exec 在 javascript 中使用 args 运行 python 脚本
- c - 链接器:将除两个之外的所有函数移动到特定的内存区域
- javascript - 操作 jQuery 得到错误:“jQuery 需要一个窗口和一个文档”
- mongodb - MongoDB.service 失败,结果退出代码
- python - 比较 PCAP 数据集
- raku - 如何在使用 NativeCall 的 Raku 发行版中捆绑 C 源代码?
- firebase - StreamBuild:流,调用返回Firestore的方法 Stream在更新之前不会检索数据
- angular - 带字体模块的角度
- snowflake-cloud-data-platform - 雪花存储过程。JavaScript 内存不足错误