Расширенные свойства с Entity Framework или NHibernate - PullRequest
0 голосов
/ 20 марта 2010

Есть ли простой способ сохранить некоторые свойства полномочий в столбце как массив, как XML или что-то еще? Запрос этих свойств, конечно, не вариант, но все равно было бы полезно расширить модель данных без переноса базы данных.

Ответы [ 5 ]

3 голосов
/ 21 марта 2010

Для NHibernate вы можете использовать динамический компонент http://nhibernate.info/doc/nh/en/index.html#components-dynamic или же используя словарь в качестве списка имя-значение nhforge.org/doc/nh/en/index.html#collections-mapping или даже Duck-Typing http://fabiomaulo.blogspot.com/2009/07/duck-typing-with-nhibernate.html

2 голосов
/ 20 марта 2010

Насколько я знаю, вы не можете сделать это напрямую с помощью NHibernate, но вы можете реализовать частное свойство, которое объединяет и разделяет ваши поля в строку и сопоставляет это свойство вместо непосредственного сопоставления ваших полей.

Но я не уверен, действительно ли это то, что вы должны делать в первую очередь. Обычно требования предъявляются во время разработки и жизненного цикла приложения, и как только вам понадобится одно из полей - даже если вы теперь думаете, что вам никогда не понадобится запрашивать это поле - у вас возникнут трудности. Добавление столбца в таблицу существующей базы данных не является большой проблемой, и вам все равно нужно обновить xml для каждого кортежа в таблице, поэтому я действительно считаю, что лучше хранить только одно поле в столбце.

С наилучшими пожеланиями,
Оливер Ханаппи

1 голос
/ 21 марта 2010

Да, вы можете сделать это в NHibernate, используя сериализуемый объект и реализацию IUserType. Эта ссылка описывает, как создать реализацию IUserType для поля XML SQL Server, а эта ссылка описывает, как использовать ее для сериализации объекта в поле XML.

1 голос
/ 20 марта 2010

Не в NHibernate. Я не знаю о структуре Entity.

Вам все еще требуется перенастройка базы данных для хранения поля XML, поэтому это не помешает вам выполнить обновление схемы базы данных, когда вы найдете эту функцию в платформе Entity или в какой-либо другой платформе.

0 голосов
/ 21 марта 2010

Вы можете попробовать преобразовать xml в строку перед сохранением в базе данных.

Entity Framework не поддерживает тип данных native-XML. Это означает что когда сущность отображается на таблица со столбцом XML, эквивалентное свойство объекта для XML столбец является строкой. Объекты могут быть отключен и сериализован как XML. Для получения дополнительной информации см. Сериализация Объекты (Entity Framework).

http://msdn.microsoft.com/en-us/library/cc716791.aspx

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