我正在尝试在 SQL Server 2008 上使用 EF 5 Code First 创建数据库。我可以使用 Integrated Security 创建数据库,但无法使用自定义用户创建数据库。该代码在我的家用计算机上为集成安全性和自定义用户运行初始化程序。
连接字符串的区别如下。除了这些,我根据connectionstrings.com将 Data Source 更改为 Server 并将 Initial Catalog 更改为 Database 。
<!--<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MVCTesting;Integrated Security=False;User Id=Green;Password=******" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MVCTesting;Integrated Security=True;" providerName="System.Data.SqlClient" />
我比较了 SQL 用户 MachineName/LoginName 和 Green。它们都具有公共和系统管理员的服务器角色,在创建数据库之前都没有任何用户映射,然后它们被映射到该数据库。
在 global.asax.cs 我有
protected void Application_Start()
{
Database.SetInitializer(new MVCTestingInitializer());
//Database.SetInitializer(new DropCreateDatabaseAlways<MVCTestingContext>());
ViewDb();
//Other setup
}
//Init the db by looking up a contact
private void ViewDb()
{
using (var context = new MVCTestingContext())
{
var user = context.Contacts.Where(u => u.FirstName.StartsWith("T"));
var asdf = "";
}
}
我的初始化程序是...
public class MVCTestingInitializer : DropCreateDatabaseAlways<MVCTestingContext>
{
protected override sealed void Seed(MVCTestingContext context)
{
//Code to init the db
}
}
使用NLog我能够验证种子是否运行。当我集成安全性时它运行,当我没有时种子不会运行。
我还在机器上创建了一个帐户,将该帐户添加到 AppPool 和 SQL Server,然后重新测试。我仍然看到连接失败。
System.Data.SqlClient.SqlException: Login failed for user 'Green'.
我决定为用户“Green”添加所有可能的权限,但我仍然看到上述错误。有人看到我错过了什么吗?我相信它是如此简单,之后我会打自己的头,但我只是看不到它。
如果我真的很遥远,请提供创建可以在我的 Web 配置中使用的 SQL 帐户/权限的步骤,并请包括应用程序池设置。
谢谢, TJ