我正在使用 postgresql 的 devart 组件 dotconnect。我已经使用 linq toEntity 创建了该网站,但是,我希望每个用户都有一个单独的数据库。这意味着我需要更改每个已登录的人的连接字符串。我了解如何生成新连接字符串等的主要部分,但是,当我将其作为参数传递给对象上下文对象时,它会返回出现错误
“不支持用户 ID 关键字,”
如果我创建一个生成实体连接的类,错误消息将更改为:
“无法加载指定的元数据资源。”
无法弄清楚在这些情况下我做错了什么。
最佳答案
好吧,像往常一样,当我发布这个问题时,大约 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 语句一样引用它。简单!!
关于c# - linq to实体更改代码中的数据库连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680388/