Настраиваемые префиксы таблиц с .Net ИЛИ / М? - PullRequest
4 голосов
/ 15 августа 2008

В веб-приложениях, таких как вики, форумы или программное обеспечение для ведения блогов, часто бывает полезно хранить ваши данные в реляционной базе данных. Поскольку многие хостинговые компании предлагают единую базу данных со своими планами хостинга (с дополнительными базами данных, которые стоят дороже), это очень полезно для ваших пользователей, когда ваши объекты базы данных (таблицы, представления, ограничения и хранимые процедуры) имеют общий префикс. Для приложений, знающих о нехватке базы данных, характерно иметь жестко заданный префикс таблицы. Я хочу больше, однако. В частности, я хотел бы иметь префикс таблицы, который пользователи могут назначить, скажем, в файле web.config (с соответствующим значением по умолчанию, конечно).

Так как я ненавижу кодировать CRUD операции вручную, я предпочитаю работать через компетентное OR / M и использую (и получаю удовольствие) LINQ to SQL, Subsonic и ADO.Net. Однако у меня возникли проблемы с новым проектом, когда дело доходит до добавления префикса таблицы в пользовательский файл web.config. Существуют ли продукты OR / M на основе .Net, которые могут элегантно справиться с этим сценарием?

Лучшее, что я смог до сих пор придумать, - это использование LINQ to SQL с внешним файлом сопоставления, который мне придется каким-то образом обновлять на основе пока еще гипотетического параметра web.config.

У кого-нибудь есть лучшее решение? Я пытался сделать это в Entity Framework, но это быстро превратилось в беспорядок. (Из-за моего незнакомства с EF? Возможно.) Как насчет SubSonic? Есть ли возможность применить префикс таблицы помимо во время генерации кода?

Ответы [ 3 ]

2 голосов
/ 28 августа 2008

Я сейчас исследовал, что нужно сделать для этого и в Entity Framework, и в LINQ to SQL, и задокументировал шаги, необходимые для каждого . Это намного дольше, чем ответы здесь, поэтому я буду доволен ссылкой на ответ, а не буду дублировать ее здесь. Это относительно связано для каждого, но LINQ to SQL является более гибким решением, а также самым простым в реализации.

1 голос
/ 15 августа 2008

Вместо использования префиксов таблиц используйте пользователя приложения, принадлежащего schema (в MS Sql 2005 или более поздней версии).

Это означает, что вместо:

select * from dbo.clientAProduct
select * from dbo.clientBroduct

У вас есть:

select * from clientA.Product
select * from clientB.Product
1 голос
/ 15 августа 2008

LightSpeed ​​ позволяет указать INamingStrategy , который позволяет динамически разрешать имена таблиц во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...