我是ef代码的新手,并且刚刚使用反向工程代码在Microsoft SQL Server 2008上创建现有数据库的模型。
我遇到的问题是,即使我在连接字符串中提供用户ID和密码,它也会在抱怨我的计算机名称时给出一个身份验证错误,就好像我使用的是集成安全性(我是不。)
我得到的错误是:
无法打开登录请求的数据库\“edmTestDBContext \”。登录失败。\ r \ n登录用户'jwelty-thinkpad \ jwelty'失败。
我的connectionString是这样的:
Data Source = srv-123; Initial Catalog = edmTestDB; Persist Security Info = True; User ID = user; Password = userpass; MultipleActiveResultSets = True
它跟我联系,就像它忽略了我的用户名并改为使用我的机器名。
有趣的是,连接字符串是由Entity Framework工具自动生成的,它可用于构建模型,但不能将模型实际连接回源数据库。
有关正在发生的事情的任何想法?
我对我的用户名/密码拥有完全权限,因为这是我在Sql Server Management Studio中使用的,这也是我首先创建数据库的方式。
我尝试添加“Integrated Security = False;”那没有用。
答案 0 :(得分:0)
看起来EF没有找到你的连接字符串。确保它在正在使用的配置文件中(您可能需要将其从类库配置复制到应用程序配置)并且它与上下文类具有相同的名称,或者通过调用向DbContext提供名称适当的基础构造函数。例如:
public EdmTestDBContext()
: base("name=MyConnectionStringName")
{
}
答案 1 :(得分:0)
EF Code-first中有一些内置约定,例如使用DbContext中的派生上下文类的名称来查找.config文件中的相关连接字符串。
因此,如果您的上下文类名为BlogContext
,它将首先查找以下connectionString:
<connectionStrings>
<clear />
<add
name="BlogContext"
...