Fluent Nhibernate - 集合名称命名约定

时间:2010-08-22 13:39:22

标签: nhibernate collections fluent-nhibernate naming-conventions

即使我使用了访问策略,是否可以为实体的所有集合设置命名约定,以便所有集合名称都是{EnityName}s而不是{entityName}s(因为Access。 CamelCaseField(Prefix.Underscore)的第一个字母是低位吗?

或者有没有办法告诉NHibernate它会在SetFetchMode方法中使用associationPath不区分大小写?

此方法不区分大小写:

ICriteria SetFetchMode(string associationPath, FetchMode mode)

我尝试构建一种设置associationPath

的类型安全方式

修改

associationPath是集合的name属性。

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

我想为name属性定义一个命名约定。

修改

我发现了这样的事情:

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

有人知道如何使用它吗?

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你问题的背景。如果您在映射和模式生成期间遵循关系的命名策略,那么您需要执行某种“约定”。

我最近在博客上发布了我的约定http://blog.zoolutions.se/post/2010/07/03/Inflector-e28093-renaming-utilities.aspxhttp://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());
    }
}