.NET ORM для базы данных без определения первичных ключей - PullRequest
2 голосов
/ 23 октября 2009

Кто-нибудь знает инструмент ORM для .Net, который будет работать с базой данных без определения первичных ключей? Кстати, мы работаем с MS SQL Server 2005.

Я не могу изменить схему БД и добавить первичные ключи - это БД нашей ERP-системы, и их бизнес-логика знает, что делает таблицу бессмысленной.

Например, для таблицы «Customer» имеет смысл иметь первичный ключ в поле CustomerNumber. SQL Server 2005 не имеет первичного ключа в таблице «Клиенты», но программное обеспечение ERP не позволяет никому добавлять двух клиентов с одинаковым CustomerNumber. Поэтому, если я перейду прямо к базе данных, я смогу добавить двух клиентов с одинаковым CustomerNumber, но при использовании нашего программного обеспечения ERP это будет запрещено.

До сих пор я успешно использовал LINQ-SQL. Я могу определить первичные ключи в конструкторе в VS2008 и использовать все возможности LINQ-SQL. Тем не менее, я собираюсь начать большой проект и ищу более зрелый инструмент ORM. Я проверил LLBL Gen Pro, но не могу заставить его работать. Я также проверил MS Entity Framework и столкнулся с проблемой там.

Есть идеи или кому-то удалось что-то похожее на то, что я надеюсь сделать?

1 Ответ

3 голосов
/ 23 октября 2009

Я думаю, вы уже определили ключ, который вам нужен, возможно, даже не осознавая этого.

Ваша база данных имеет первичные ключи, они просто не применяются механизмом базы данных.

Например, ваша таблица Customer имеет поле CustomerNumber и т. Д.

Любой .NET ORM (я предпочитаю NHibernate ) может прекрасно работать как для чтения, так и для обновления.

Создать и удалить - время, когда вы можете столкнуться с проблемой.

Для создания вам необходимо сгенерировать новые действительные значения CustomerNumber; а для удаления вам необходимо убедиться, что вы не нарушаете отношения с внешним ключом. (В NHibernate вы можете использовать тип первичного ключа assigned, что в основном означает, что ваш код будет назначать значения ключей, и NHibernate должен использовать их.)

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