即使我使用了访问策略,是否可以为实体的所有集合设置命名约定,以便所有集合名称都是{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. ...
}
}
有人知道如何使用它吗?
答案 0 :(得分:0)
我不确定我完全理解你问题的背景。如果您在映射和模式生成期间遵循关系的命名策略,那么您需要执行某种“约定”。
我最近在博客上发布了我的约定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());
}
}