npgsql - 使用一个连接来访问多个模式

时间:2016-02-24 08:46:36

标签: c# npgsql

我想创建一个应用程序,其中每个客户的数据都存储在自己的架构中,其中每个架构中的表都是相同的。

我认为使用模式而不是数据库会更便宜,因为使用模式只需要为数据库建立一个连接即可到达所有客户模式。

但我不确定如何使用npgsql实现这一目标。有没有办法为连接创建某种模式上下文,然后它与原始连接具有相同的api?

我想象这样的事情:

NpgsqlConnection con =  new NpgsqlConnection("CONNECTION STRING");
con.Open();

SchemaContext customer1 = con.createSchemaContext("customer1");
SchemaContext customer2 = con.createSchemaContext("customer2");

customer1.Query("select * from users");
customer2.Query("select * from users");

是否已有类似的内容,或者有没有办法自行实现?

1 个答案:

答案 0 :(得分:0)

首先,你的问题与Npgsql没有任何关系 - 它是一个PostgreSQL问题。

PostgreSQL确实支持架构,你可以谷歌关于它。简而言之,您创建模式,然后在其中创建表,然后访问这些表:SELECT * FROM customer1.users。 Npgsql除此之外不提供任何编程API,因为它(大多数情况下)不会触及你发送给PostgreSQL的SQL。

请注意,如果每个想象架构中的表格具有相同的列(并且我想象它们可能会这样做),那么您可能最好有一张桌子并通过&#34来区分不同的客户;顾客"列。