FluentNHibernate Component.ColumnPrefix 未应用

2024-02-23

我最近升级了FluentNHibernate from v1.1.0.685 to v1.2.0.712(最新)对于NHibernate 2.1.

我的问题似乎是使用的类Component().ColumnPrefix()映射。

例如,

 public class Address{ 
    public string Street {get; set;} 
    public string Zip {get; set;} 
 } 

 public class AddressMap : ComponentMap<Address>{
     Map( x => x.Street );
     Map( x => x.Zip );
 }

 public class PersonMap : ClassMap<Person> 
 { 
    public PersonMap(){ 

       Id( x => x.Id ); 

       Map( x=> x.Name ); 

       Component( x => x.Address ) 
          .ColumnPrefix("ADDRESS_"); 
    } 
 } 

人员表

  Id       Name        ADDRESS_Street     ADDRESS_Zip
 ----------------------------------------------------
  1        Brian       123 Example St.    12345

FNH v1.1.0.685 中的行为

The “地址_”前缀是正确地应用于地址组件的属性。

FNH v1.2.0.712(最新)中的行为

The “地址_”前缀是不再应用于地址组件的属性。NHibernate生成“Street" and "Zip" 上表中未命名的列。


如果有人有任何见解,我将不胜感激。我开始想这个might是一个错误。

Thanks,
Brian


@Brian,

几周前我遇到了确切的障碍。我正在使用自动映射并通过创建组件属性约定来解决它:

Public Class ComponentPropertyConvention
    Implements IPropertyConvention, IPropertyConventionAcceptance

    Public Sub Accept(ByVal criteria As IAcceptanceCriteria(Of IPropertyInspector)) Implements IConventionAcceptance(Of IPropertyInspector).Accept
       criteria.Expect(Function(inspector) inspector.EntityType.Namespace.EndsWith("Components"))
    End Sub

    Public Sub Apply(ByVal instance As IPropertyInstance) Implements IConvention(Of IPropertyInspector, IPropertyInstance).Apply
        instance.Column(String.Format("{0}_{1}", New String() {instance.EntityType.Name.ToLower(), instance.Property.Name.Dbize()}))
    End Sub

End Class

可能有很多方法可以实现您的接受标准,因此如果不适合,请不要遵循我的方法......

Cheers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FluentNHibernate Component.ColumnPrefix 未应用 的相关文章

随机推荐