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

时间:2011-01-13 13:06:39

标签: c# linq linq-to-entities entities

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

“不支持用户ID关键字”,

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

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

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

1 个答案:

答案 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 !!