EF代码优先- {"CREATE DATABASE权限在DATABASE 'master'.&
本文关键字:DATABASE CREATE master 权限 quot 代码 EF | 更新日期: 2023-09-27 18:10:38
我只是想在我的开发环境中快速启动默认数据库。
解决这个问题最简单的方法是什么?
我曾经遇到过这个问题并解决了。关键是使用SQL身份验证而不是Windows。这是指定默认db的最清晰的方式。
按此方式尝试连接字符串:
<add name="MFCConnectionString" connectionString="Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'MFC.mdf;Initial Catalog=MFC;Integrated Security=false;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
记得将sa的默认db从master设置为MFC,并且Integrated security = false。顺便说一下,sa通常是禁用的,所以请先在sql server管理工作室中启用并测试。
在有权限在开发SQL服务器上创建数据库的帐户下运行应用程序。如果使用SQL身份验证,请在具有此权限的连接字符串中为SQL登录指定凭据。默认情况下,在SQL server安装期间指定的admin帐户具有此权限,但您也可以将其添加到其他登录中。
对于像我一样在寻找错误答案时遇到这个问题的人来说,这可能很有用。这些步骤应该是你所需要的,我已经复制了代码,你可以粘贴,让它快速运行。
我使用代码第一,尝试使用'创建数据库',但得到了错误的标题。关闭并重新打开(这次作为管理员)-命令无法识别,但'update-database'被如此使用。同样的错误。
下面是我解决这个问题的步骤:1)打开SQL Server Management Studio,创建数据库"Videos"
2)在VS2013中打开服务器资源管理器(在"视图"下)并连接到数据库。
3)右键单击connection ->属性,并抓取连接字符串。
4)在网上。我添加了连接字符串
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=MyMachine;Initial Catalog=Videos;Integrated Security=True" providerName="System.Data.SqlClient"
/>
</connectionStrings>
在我设置上下文的地方,我需要引用DefaultConnection:
using System.Data.Entity;
namespace Videos.Models
{
public class VideoDb : DbContext
{
public VideoDb()
: base("name=DefaultConnection")
{
}
public DbSet<Video> Videos { get; set; }
}
}
6)在Package Manager控制台中运行'update-database'创建表
请记住,在Configuration.cs:
中,您可以使用Seed()在创建时插入值。 protected override void Seed(Videos.Models.VideoDb context)
{
context.Videos.AddOrUpdate(v => v.Title,
new Video() { Title = "MyTitle1", Length = 150 },
new Video() { Title = "MyTitle2", Length = 270 }
);
context.SaveChanges();
}
我有同样的问题EF 6.0和代码第一。如果您有多个具有不同连接字符串的项目,并且在包管理器控制台上运行update-database,即使您选择了正确的默认项目,Visual studio也会从启动项目中读取连接字符串,因此如果启动项目上没有连接,则错误是permission denied..
您可以通过设置正确的项目作为启动项目(仅用于更新数据库)来解决这个问题。