我正在使用postgresql的devart组件dotconnect。我使用linq创建了实体站点,但是,我希望每个用户都有一个单独的数据库。这意味着我需要为已登录的每个人更改连接字符串。我理解如何生成新连接字符串等的主要部分,但是,当我将其作为参数传递给对象上下文对象时,它会返回错误
“不支持用户ID关键字”,
如果我创建一个生成实体连接的类,则错误消息将更改为:
“无法加载指定的元数据资源。”
在这些情况下无法弄清楚我做错了什么。
答案 0 :(得分: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 !!