gpt4 book ai didi

c# - Visual Studio 中的 Entity Framework : database is not created with DbContext base constructor

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:44 25 4
gpt4 key购买 nike

我是 Visual Studio 和 .NET 的新手,我正在关注 this tutorial on Lynda (使用 Entity Framework 进行代码优先开发)创建一个 ASP.NET MVC 应用程序,我应该能够在其中使用表单将 Tour 对象添加到数据库。

我创建了一个继承自 DbContext 的类 MyDbContext

我添加了一个基类构造函数,其中包含从表单提交信息时需要为此应用程序创建的数据库的名称。我还添加了一个名为 ToursDbSet 来保存游览对象。

这是 MyDBContext.cs 中的代码:

public class MyDBContext : DbContext
{
public MyDBContext() : base("ExploreCalifornia")
{

}

public DbSet<Tour> Tours { get; set; }
}

在 Tour Controller 中,我创建了一个名为 dbMyDbContext 实例:

private MyDBContext db = new MyDBContext();

我有一个 Create 页面,其中包含用于添加新游览的表单,这是此页面的 POST 路由:

[HttpPost]
public ActionResult Create(Tour tour)
{
try
{
db.Tours.Add(tour);
db.SaveChanges();

return RedirectToAction("Index");
}
catch
{
return View();
}
}

在调试器之后,当我尝试添加新的游览时,它会跳过 SaveChanges 行并直接进入 catch block 。从未创建任何数据库,解决方案资源管理器中的 App_Data 下也没有显示任何内容。

教程提到数据库将使用 SQL Server Express LocalDB 创建,但我在服务器资源管理器中没有看到任何对 LocalDB 的引用。这仍然是新的,所以我对如何处理这个问题有点迷茫。

关于可能出现的问题或从哪里开始寻找的任何想法?

最佳答案

问题是,当您使用带字符串参数的 DbContext 构造函数时,该参数必须是1. app.config 或 web.config 中连接字符串的名称,格式为 name=MyConnectionString。例如,您的配置包含

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MyConnectionString" connectionString="your str here" />
</connectionStrings>
</configuration>

然后你这样声明你的上下文

public class MyDBContext : DbContext
{
public MyDBContext() : base("name=MyConnectionString")
{

}

public DbSet<Tour> Tours { get; set; }
}

或者2.直接连接字符串,像这样

public class MyDBContext : DbContext
{
public MyDBContext() : base("Server=(local), Database=MyDBName, User=blah-blah...")
{

}

public DbSet<Tour> Tours { get; set; }
}

请注意,如果您使用配置文件,它必须在您的 AppDomain 目录中(对于 exe,它是它的文件夹;对于网站,它是该网站的 bin 文件夹)。

关于c# - Visual Studio 中的 Entity Framework : database is not created with DbContext base constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248982/

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