gpt4 book ai didi

entity-framework - 为什么我得到这个 "Invalid object name ' dbo。 MVC4 出现 *'"错误?

转载 作者:行者123 更新时间:2023-12-04 08:33:36 26 4
gpt4 key购买 nike

我收到这个错误:

Invalid object name 'dbo.ImageMetas'.

在这一行:

return View(db.Images.ToList());

我的数据库上下文如下所示:

public class GalleryContext : DbContext
{
public GalleryContext()
: base("DefaultConnection")
{
}

public DbSet<ImageMeta> Images { get; set; }
public DbSet<ImageFile> ImageFiles { get; set; }
}

还有我的模型:

public class ImageMeta
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public UserProfile User { get; set; }
public string Name { get; set; }
public virtual ICollection<ImageFile> Files { get; set; }
}

这是一个全新的 MVC4 项目。我先编写模型,然后自动生成 Controller 。

inspected the database ,确实缺少表格。

我的印象是它会为我自动创建表格;作为this tutorial建议。

那么它为什么不这样做呢?


好的,如果我添加一个以我的上下文命名的连接字符串(并删除基础构造函数),它现在就可以工作了。那么,为什么我不能使用 DefaultConnection?

<add name="GalleryContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\gallery.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"
/>

最佳答案

尝试将不存在的数据库放入连接字符串中。如果数据库不存在,EF Code-First 会默认创建数据库(当然,如果提供的凭据有权创建数据库),但它不会更改现有数据库(因为它可能会影响您现有的数据)。

对现有数据库的更改应使用 code first migrations 完成.

编辑:

或者,如果您根本不关心数据,您可以设置数据库初始化程序(即在 global.asax 应用程序启动时),它会在您每次更改模型时删除并重新创建数据库:

DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseIfModelChanges<MyDBContext>());

参见 DropCreateDatabaseIfModelChanges Class了解更多详情。

关于entity-framework - 为什么我得到这个 "Invalid object name ' dbo。 MVC4 出现 *'"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12239707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com