【发布时间】:2015-12-30 22:26:34
【问题描述】:
我在这里看到了一些答案,但没有任何帮助解决问题。
我正在关注 MVC Jumpstart 上的 Microsoft ITAcademy 教程,他们通过使用 EF Code-First 方法的示例进行教学。
当我运行应用程序时,我收到一个错误:
数据库“master”中的 CREATE DATABASE 权限被拒绝
这是我的连接字符串:
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-Conference-20150930151714;Integrated Security=true"
providerName="System.Data.SqlClient" />`
我不会在这里发布所有代码,因为它是逐行通过 Microsoft 教程完成的。
当我调用应该从数据库中检索数据的控制器之一时它失败了:
public ActionResult Index()
{
return View(db.Speakers.ToList());//fails here with described exception
}
这就是Database 在Global.asax.cs 中的初始化方式:
using System.Data.Entity;
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Database.SetInitializer<ConferenceContext>(new ConferenceContextInitializer());
//the rest of code....//
}
}
这是ConferenceContext类:
using System.Data.Entity;
public class ConferenceContext : DbContext
{
//public ConferenceContext() : base("name = DefaultConnection") { }
public DbSet<Session> Sessions { get; set; }
public DbSet<Speaker> Speakers { get; set; }
}
这是给Database添加虚拟数据的一段代码:
public class ConferenceContextInitializer : DropCreateDatabaseAlways<ConferenceContext>
{
protected override void Seed(ConferenceContext context)
{
context.Sessions.Add(
new Session()
{
Title = "I want Spaghetti",
Abstract = "The life and times of spaghetti lover",
Speaker = context.Speakers.Add(
new Speaker()
{
Name = "John Doe",
EmailAddress = "john.doe@test.com"
})
});
context.SaveChanges();
}
}
你能解释一下应该在哪里创建数据库吗?
我应该对我的SQL Server 拥有特殊权限,还是只需要在App_Data 文件夹中创建一个数据库?
我可以在我的工作PC 上创建数据库吗?
【问题讨论】:
-
你能不能试着取消注释这一行,看看会发生什么'//public ConferenceContext() : base("name = DefaultConnection") { }'
-
进入 SSMS 并在 SQLEXPRESS 实例中创建一个数据库。您当前的连接字符串希望将其称为“aspnet-Conference-20150930151714”,但您可能只想将其称为“aspnetdemo”或简单的名称。如果您无法在 Management Studio 中创建它,则说明存在权限问题。另一种选择是使用 LocalDb msdn.microsoft.com/en-us/library/hh510202(v=SQL.110).aspx
-
问题是数据库必须在代码运行时自动创建。我不必自己创建它。我想,我没有创建数据库的权限
标签: c# asp.net-mvc ef-code-first