0

我是 ef 代码的新手,刚刚使用逆向工程代码在 Microsoft SQL Server 2008 上创建现有数据库的模型。

我遇到的问题是,即使我在连接字符串中提供了用户 ID 和密码,它也会给我一个身份验证错误,同时抱怨我的计算机名称,就好像我使用的是集成安全性(我不是。)

我得到的错误是这样的:

无法打开登录请求的数据库“edmTestDBContext”。登录失败。\r\n用户“jwelty-thinkpad\jwelty”登录失败。

我的连接字符串是这样的:

数据源=srv-123;初始目录=edmTestDB;持久安全信息=True;用户ID=user;密码=userpass;MultipleActiveResultSets=True

它对我来说就像它忽略了我的用户 ID 并使用我的机器名称一样。

有趣的是,连接字符串是由实体框架工具自动生成的,它可以用于构建模型,但不能用于将模型实际连接回源数据库。

有什么想法吗?

我确实拥有我的用户名/密码的完全权限,因为这是我在 Sql Server Management Studio 中使用的,这也是我最初创建数据库的方式。

我尝试添加“集成安全=假;” 这无济于事。

4

2 回答 2

0

EF Code-first 中有一些内置约定,例如使用 DbContext 派生上下文类的名称在 .config 文件中查找相关连接字符串。因此,如果您的上下文类名为BlogContext,它将首先查找以下 connectionString:

<connectionStrings>
    <clear />
    <add
      name="BlogContext"
...
于 2012-06-01T05:51:29.937 回答
0

看来 EF 没有找到您的连接字符串。确保它在正在使用的配置文件中(您可能需要将它从类库配置复制到应用程序配置)并且它与上下文类具有相同的名称,或者您通过调用为 DbContext 提供名称适当的基础构造函数。例如:

public EdmTestDBContext()
 : base("name=MyConnectionStringName")
{
}
于 2012-05-31T19:56:00.363 回答