昨天从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类中)中传递的相同凭据可以正常工作,但在这里不起作用。但是,当我从SSMS手动创建NewTestDb
时,连接成功。现在,当我调用SaveChanges
的{{1}}方法时,我得到了:
无效的对象名称'dbo.Campaigns'
我已经在SO职位上经历了很多工作,并且我的代码没有发现任何问题。有人可以指出我在哪里/我在做什么错吗?
P.S。我是EF的新手。
答案 0 :(得分:0)
感谢bolkay。我想到了。原来我必须从Package Manager控制台运行以下特定命令:
enable-migrations
add-migration InitialMigration
update-database
现在,一切正常! 干杯!