实体框架代码第一个权限/数据库创建问题

时间:2013-04-30 16:57:36

标签: sql-server-2008 entity-framework ef-code-first entity-framework-5

我正在尝试使用SQL Server 2008上的EF 5 Code First创建数据库。我可以使用集成安全性创建数据库,但我无法使用自定义用户创建数据库。代码在我的家庭计算机上运行初始化程序,用于集成安全性和自定义用户。

连接字符串的不同之处如下。除此之外,我还根据connectionstrings.com将数据源更改为服务器,将初始目录更改为数据库。

<!--<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进行了比较。它们都具有public和sysadmin的服务器角色,在创建数据库之前都没有任何用户映射,然后它们被映射到该数据库。

在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'添加所有可能的权限,我仍然看到上面的错误。有谁看到我错过了什么?我确信这很简单,之后我会把自己打成一团,但我只是看不到它。

如果我真的很远,请提供创建我可以在我的网络配置中使用的SQL帐户/权限的步骤,并请包含应用程序池设置。

谢谢, TJ

1 个答案:

答案 0 :(得分:2)

我会将其作为答案发布:)

如果您在连接到db时遇到问题,请打开ssms并使用相同的凭据登录db。这将确认您拥有正确的凭据;)