将ADO.Net实体数据模型连接到数据库
本文关键字:连接 数据库 数据模型 实体 ADO Net | 更新日期: 2023-09-27 18:22:10
我有一个使用ADO.NET实体数据模型的WPF应用程序。创建edmx
后,默认情况下会在app.config
中创建一个连接字符串,如下所示:
<add name="Entities"
connectionString="metadata=res://*/Model.DataAccess.DataModel.csdl|res://*/Model.DataAccess.DataModel.ssdl|res://*/Model.DataAccess.DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=databasename;integrated security=True;user id=username;multipleactiveresultsets=True;application name=EntityFramework""
providerName="System.Data.EntityClient" />
我使用代码背后的实体如下:
Entities ent = new Entities();
var tes = (from e in ent.testtable
select e.name).tolist();
在我发布应用程序后,用户无法连接到数据库。他们得到错误
基础提供程序在打开时失败。
用户没有访问数据库的权限,但是,由于配置文件中的凭据具有访问权限,因此用户不应该能够访问数据库。
如果我遗漏了什么,请告诉我,因为我不知道自己做错了什么。
您的"提供者连接字符串"中有Integrated Security=True
和User id=username;
。
不要这样!
如果您这样做,Integrated Security=true
将具有优先级,因此现在,将使用当前登录的用户凭据尝试连接。
您需要从提供程序连接字符串中删除Integrated Security=true
!
provider connection string="data source=servername;initial catalog=databasename;integrated security=True;user id=username;multipleactiveresultsets=True;application name=EntityFramework"
************************ <--- remove this part
请改用此连接字符串:
<add name="Entities"
connectionString="metadata=res://*/Model.DataAccess.DataModel.csdl|res://*/Model.DataAccess.DataModel.ssdl|res://*/Model.DataAccess.DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=databasename;user id=username;multipleactiveresultsets=True;application name=EntityFramework""
providerName="System.Data.EntityClient" />