2011-01-13 22 views
2

我正在使用用于postgresql的devart组件dotconnect。我已经创建了使用LINQ到实体的网站,但是,我希望每个用户都有一个单独的数据库。这意味着我需要为已登录的每个人更改连接字符串。我理解如何生成新连接字符串等的主要部分,但是,当我将它作为参数传递给它返回的对象上下文对象时与错误linq更改代码中的数据库连接字符串的实体

“不支持用户标识关键字,”

如果我创建生成一个实体连接错误消息改变为类:

“无法加载指定的元数据资源”

无法计算出我在这些情况下做错了什么。

回答

5

好吧,像往常一样,当我发布这个问题时,大约3分钟后我发现了问题。实体连接字符串,一般用途应该有一个很酷的小

RES:// */

这使得元数据的工作。这解决了元数据资源的问题,这是有效的。所以为了帮助像我这样的其他人花费开发时间来完成这个任务,我创建了一个类,使用类似的方法。

public static string getConnString(string database) 
    { 
     string connectionstring = "User Id=USER ID HERE;Password=PASSWORD HERE;Host=server;Database="+database+";Persist Security Info=True;Schema=public"; 

     EntityConnectionStringBuilder newconnstring = new EntityConnectionStringBuilder(); 
     newconnstring.Metadata = @"res://*/"; 
     newconnstring.Provider = "Devart.Data.PostgreSql"; 
     newconnstring.ProviderConnectionString = connectionstring; 


     return newconnstring.ToString(); 

    } 

然后创建像这样

dataEntities data = new dataEntities(databaseConnection.getConnString(INSERTDBNAMEHERE); 

然后大家可以参考,在相同的方式,通常LINQ声明的构造函数。 Simples!

相关问题