C # свободно владеет nhibernate - PullRequest
1 голос
/ 14 декабря 2010

Имеет ли Fluent NHibernate простой метод для автоматического определения сущностей?

Допустим, у меня есть некоторые классы, такие как следующий и соответствующие классы:

public sealed class Hello
{
    public String Name { get; set; }
    public DateTime Timestamp { get; set; }
}

public class HelloMapping : ClassMap<Hello>
{
    public HelloMapping()
    {
        Not.LazyLoad();
        // Some Id here
        Map(x => x.Name).Not.Nullable().Length(64);
        Map(x => x.Timestamp).Not.Nullable();
    }
}

Итак, Fluent NHibernateимеет что-то вроде "добавить каждую сопоставленную сущность, такую ​​как Hello" ?

Если нет, то какой самый простой способ позволить NHibernate использовать предоставленные мной сопоставления?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

Это зависит от того, что вы подразумеваете под «как»?

Вы имеете в виду все сущности в одном и том же пространстве имен? Тогда вы можете сделать

public class MyConfiguration : DefaultAutomappingConfiguration {
    public override bool ShouldMap(Type type) {
        return type.Namespace == typeof(Hello).Namespace;
    }
}

Что бы вы ни имели в виду, вы, вероятно, можете заключить соглашение о том, что вы пытаетесь достичь. См. автоматическое сопоставление в Fluent NHibernate .

0 голосов
/ 14 декабря 2010

Краткий ответ: http://wiki.fluentnhibernate.org/Auto_mapping. Вы можете использовать объекты и базовые соглашения, встроенные в FluentNH, для отображения объектов, для которых не требуется особого поведения.

Вы также можете использовать наследование для определения отображений, которые имеютобщие элементы в большинстве или во всех классах.Say Hello - это базовый класс, который определяет Id, Name и Timestamp.Вы можете определить сопоставление для этого базового класса, а затем либо получить его непосредственно для создания сопоставлений для других объектов, либо вы можете определить сопоставления JoinedSubclass для объектов, которые должны храниться в общей структуре таблицы (обычно потому, что они являются различными разновидностями базового класса).классы, такие как CheckingAccount, SavingsAccount и MoneyMarketAccount, представляют собой различные типы BankAccounts со схожими структурами данных).

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