C# Visual Studio中的实体框架:未使用DbContext基构造函数创建数据库
我是Visual Studio和.NET的新手,我正在遵循(使用实体框架的代码优先开发)创建一个ASP.NET MVC应用程序,在该应用程序中,我应该能够使用表单将漫游对象添加到数据库中 我创建了一个类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页面,其中包含添加新巡更的表单,下
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){
并在返回视图()上设置断点
-然后你应该了解实际问题的一些细节-目前你根本不知道发生了什么。