Fluent Nhibernate - Соглашение об именовании имен коллекций - PullRequest
0 голосов
/ 22 августа 2010

Можно ли установить соглашение об именах для всей коллекции сущности, даже если я использую Стратегию доступа или нет, чтобы все имена коллекций были {EnityName}s вместо {entityName}s (из-за Access.CamelCaseField (Prefix.Подчеркнуть) первая буква ниже)?

Или есть ли способ, с помощью которого я могу сказать NHibernate, что он будет использовать регистр ассоциации без учета регистра в методе SetFetchMode?

Этот метод не являетсябез учета регистра:

ICriteria SetFetchMode(string associationPath, FetchMode mode)

Я пытаюсь создать безопасный для типа способ установки associationPath

РЕДАКТИРОВАТЬ:

AssociationPath являетсяатрибут имени коллекции.

<set access="field.camelcase-underscore" cascade="save-update" inverse="true" lazy="true" name="employees" table="TeamEmployee" mutable="true">

Я хочу определить соглашение об именах для атрибута имени.

РЕДАКТИРОВАТЬ:

Я нашел что-токак это:

public class LowercaseCollectionNameConvention : IClassConvention
{
    public void Apply(IClassInstance instance)
    {
        instance.Collections. ...
    }
}

Кто-нибудь знает, как это использовать?

1 Ответ

0 голосов
/ 23 августа 2010

Я не уверен, что полностью понимаю контекст вашего вопроса. Если вы придерживаетесь стратегии именования для отношений во время отображения и генерации схемы, тогда вам нужно сделать что-то вроде «Соглашения».

Я недавно опубликовал свои соглашения http://blog.zoolutions.se/post/2010/07/03/Inflector-e28093-renaming-utilities.aspx и http://blog.zoolutions.se/post/2010/07/05/All-my-current-Fluent-NHibernate-Conventions.aspx

Если бы вы могли добавить более подробное описание, я с удовольствием дополню свой ответ.

РЕДАКТИРОВАТЬ Если вы скопируете класс Inflektor из моего блога или любого другого местоположения, которое вы можете найти, вы должны найти следующее:

public class HasManyConvention : IHasManyConvention
{
    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Cascade.SaveUpdate();
        instance.Inverse();
        string pluralized = Inflector.Pluralize(instance.ChildType.Name);
        instance.Name(pluralized.ToLower());
    }
}
...