我想创建一个应用程序,其中每个客户的数据都存储在自己的架构中,其中每个架构中的表都是相同的。
我认为使用模式而不是数据库会更便宜,因为使用模式只需要为数据库建立一个连接即可到达所有客户模式。
但我不确定如何使用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");
是否已有类似的内容,或者有没有办法自行实现?
答案 0 :(得分:0)
首先,你的问题与Npgsql没有任何关系 - 它是一个PostgreSQL问题。
PostgreSQL确实支持架构,你可以谷歌关于它。简而言之,您创建模式,然后在其中创建表,然后访问这些表:SELECT * FROM customer1.users
。 Npgsql除此之外不提供任何编程API,因为它(大多数情况下)不会触及你发送给PostgreSQL的SQL。
请注意,如果每个想象架构中的表格具有相同的列(并且我想象它们可能会这样做),那么您可能最好有一张桌子并通过&#34来区分不同的客户;顾客"列。