linq到代码中更改数据库连接字符串的实体

Dan*_*rly 2 c# linq linq-to-entities entities

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

"不支持用户ID关键字,"

如果我创建一个生成实体连接的类,则错误消息将更改为:

"无法加载指定的元数据资源."

在这些情况下无法弄清楚我做错了什么.

Dan*_*rly 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();

    }
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个构造函数

   dataEntities data = new dataEntities(databaseConnection.getConnString(INSERTDBNAMEHERE);
Run Code Online (Sandbox Code Playgroud)

然后我们可以像通常的linq语句一样引用它.Simples!