C# Visual Studio中的实体框架:未使用DbContext基构造函数创建数据库

C# Visual Studio中的实体框架:未使用DbContext基构造函数创建数据库,c#,asp.net,asp.net-mvc,entity-framework,visual-studio-2015,C#,Asp.net,Asp.net Mvc,Entity Framework,Visual Studio 2015,我是Visual Studio和.NET的新手,我正在遵循(使用实体框架的代码优先开发)创建一个ASP.NET MVC应用程序,在该应用程序中,我应该能够使用表单将漫游对象添加到数据库中 我创建了一个类MyDbContext,它继承自DbContext 我添加了一个基类构造函数,其中包含从表单提交信息时需要为此应用程序创建的数据库的名称。我还添加了一个名为Tours的DbSet,用于保存巡视对象 以下是MyDBContext.cs中的代码: 我有一个Create页面,其中包含添加新巡更的表单,下

我是Visual Studio和.NET的新手,我正在遵循(使用实体框架的代码优先开发)创建一个ASP.NET MVC应用程序,在该应用程序中,我应该能够使用表单将漫游对象添加到数据库中

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

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

以下是MyDBContext.cs中的代码:

我有一个
Create
页面,其中包含添加新巡更的表单,下面是该页面的发布路线:

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

        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
在调试器之后,当我尝试添加新的巡更时,它跳过
SaveChanges
行,直接进入catch块。没有创建任何数据库,并且在解决方案资源管理器中的App_Data下没有显示任何内容

本教程提到将使用SQLServerExpressLocalDB创建数据库,但我在服务器资源管理器中没有看到任何对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; }
}
public class MyDBContext : DbContext
{
    public MyDBContext() : base("Server=(local), Database=MyDBName, User=blah-blah...")
    {

    }

    public DbSet<Tour> Tours { get; set; }
}
公共类MyDBContext:DbContext
{
public MyDBContext():base(“name=MyConnectionString”)
{
}
公共数据库集{get;set;}
}
或 2.直接连接字符串,如下所示

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

    }

    public DbSet<Tour> Tours { get; set; }
}
public class MyDBContext : DbContext
{
    public MyDBContext() : base("Server=(local), Database=MyDBName, User=blah-blah...")
    {

    }

    public DbSet<Tour> Tours { get; set; }
}
公共类MyDBContext:DbContext
{
public MyDBContext():base(“服务器=(本地),数据库=MyDBName,用户=等等…”)
{
}
公共数据库集{get;set;}
}

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

您可以添加收到的异常消息吗?将行
catch{
更改为
catch(exception ex){
并在
返回视图()上设置断点
-然后你应该了解实际问题的一些细节-目前你根本不知道发生了什么。