将ADO.Net实体数据模型连接到数据库

时间:2014-09-16 20:00:26

标签: c# wpf entity-framework xaml datagrid

我有一个使用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=&quot;data source=servername;initial catalog=databasename;integrated security=True;user id=username;multipleactiveresultsets=True;application name=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

我使用后面代码中的实体如下:

Entities ent = new Entities();
var tes = (from e in ent.testtable
select e.name).tolist();

发布应用程序后,用户无法连接到数据库。他们得到错误

  

底层提供程序在Open上失败。

用户无权访问数据库,但由于配置文件中的凭据具有访问权限,因此用户无法访问数据库。

如果我在这里遗漏了什么,请告诉我,因为我无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:0)

您的&#34;提供商连接字符串&#34;中 Integrated Security=True以及User id=username;

不要这样做!

如果这样做,Integrated Security=true将具有优先权,所以现在,尝试使用当前登录的用户凭据进行连接。

您需要从提供商连接字符串中删除 Integrated Security=true

provider connection string=&quot;data source=servername;initial catalog=databasename;integrated security=True;user id=username;multipleactiveresultsets=True;application name=EntityFramework&quot;
                                                                                     ************************  <--- 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=&quot;data source=servername;initial catalog=databasename;user id=username;multipleactiveresultsets=True;application name=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />