Использование DataAnnotations с NHibernate - PullRequest
1 голос
/ 04 февраля 2011

В поисках наилучшего способа отображения даты на Razor в качестве краткой даты я наткнулся на аннотации данных, и мне кажется, что они очень удобны для возможности добавления дополнительных метаданных к моим различным моделям.

Здесь есть одна загвоздка: я использую NHibernate, настроенный Fluent NHibernate, и NHibernate, похоже, не переносит атрибуты в свои сгенерированные прокси-классы.

Есть ли способ заставить его скопировать атрибуты, или я не должен использовать свои классы модели непосредственно в виде, а вместо этого каким-то образом трансформировать модель (шаблон T4?)

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

Я бы порекомендовал вам разделить классы для представления и модели домена (nhibernate). Используйте automapper для перевода с одного на другой.

2 голосов
/ 07 февраля 2011

Модели NHibernate вы используете частичные классы?Если это так, вы можете создать отдельный класс метаданных, чтобы украсить их аннотациями данных.У меня недавно была похожая проблема, и я получил ответ на мой вопрос здесь .По сути, вы создаете частичный класс с тем же именем, что и сгенерированный класс NHibernate.Затем вы создаете класс метаданных с теми же полями, что и у этого класса, декорируете их соответствующим образом, а затем применяете этот класс метаданных к созданному вами частичному классу, так что даже если вы создаете классы повторно, ваш частичный класс не будет и будет сохранять вашиДанные Аннотации вокруг.

[MetadataType(typeof(PersonMetadata))]
public partial class Person {

}

public class PersonMetadata {

   [Required]
   [Display(Name = "First Name")]
   public string FirstName;
}

Источник: Остин Лэмб через этот ответ .

...