У меня есть БД SQL Server с помощью рекурсивной таблицы:Отображение пустых строк в NULL в NHibernate
MyTable:
ID : string PrimaryKey
Parent: string references MyTable - NOTNULL !!
и карта с Fluent NHibernate для
class MyTable
{
public virtual string ID {get; set;}
public virtual MyTable Parent {get; set;}
}
Моя проблема заключается в том, что родитель должен быть пустым в мое приложение C#, если столбец «Родитель» - «» (пустая строка) в базе данных и наоборот. К сожалению, я не могу изменить тип столбца, чтобы принять NULL!
Я пытался использовать IEmptyInterceptor, но я не работаю.
Спасибо заранее, forki
Я пробовал это. Но, к сожалению, я этого не добился. Должен ли я реализовать IUserType для класса MyTable? – forki23
Ваш класс домена не должен реализовывать интерфейс IUserType, вместо этого вы должны создать отдельный класс пользовательского типа на уровне доступа к данным, который затем будет использоваться при сопоставлении. Таким образом, ваш уровень домена по-прежнему не будет иметь места для данных уровень доступа. Чтобы указать типы пользователей в сопоставлении Fluent NHibernate, используйте метод .CustomTypeIs(). –
IUserType - это, безусловно, путь. Создайте реализацию этого интерфейса отдельно от всего остального, который будет использоваться для преобразования нулевых строк в пустые и наоборот. Затем вы указываете эту реализацию в своих плавных сопоставлениях с использованием CustomTypeIs, как показал Эрик. –