2016-02-24 3 views
1

Я хочу создать приложение, в котором данные каждого пользователя хранятся в его собственной схеме, где таблицы в каждой схеме одинаковы.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"); 

Есть ли уже что-то подобное, или есть способ осуществить это сам?

ответ

0

Прежде всего, ваш вопрос никак не связан с Npgsql - это вопрос PostgreSQL.

PostgreSQL поддерживает схемы, вы можете Google об этом. В двух словах вы создаете схемы, затем создаете в них таблицы, а затем получаете доступ к этим таблицам таким образом: SELECT * FROM customer1.users. Npgsql не предоставляет никаких программных API за пределами этого, поскольку он (в основном) не касается SQL, который вы отправляете в PostgreSQL.

Обратите внимание, что если таблицы в каждой из ваших воображаемых схем имеют одинаковые столбцы (и я предполагаю, что они, вероятно, делают), то вам, вероятно, лучше иметь одну таблицу и различать разных клиентов через колонку «клиент» ,

Смежные вопросы