Fluent nhibernate Fluent Nhibernate组件前缀

Fluent nhibernate Fluent Nhibernate组件前缀,fluent-nhibernate,Fluent Nhibernate,有没有办法在fluent中设置组件的列前缀。例如: public class SomeClassMap : ClassMap < SomeClass > { public SomeClassMap() { CreateMap(); } private void CreateMap() { WithTable("Class"); Id(x => x.Id).GeneratedBy.Guid

有没有办法在fluent中设置组件的列前缀。例如:

public class SomeClassMap : ClassMap < SomeClass >
{

    public SomeClassMap()
    {
        CreateMap();
    }

    private void CreateMap()
    {
        WithTable("Class");
        Id(x => x.Id).GeneratedBy.Guid();
        Map(x => x.Name).WithLengthOf(100);

        Component<SomeComponent>(x => x.somecomponent, m =>
        {
            m.Map(x => x.Name).SetAttribute("column", "SomeComponentName");
            m.Map(x => x.Summary).SetAttribute("column", "SomeComponentSummary");
            .... etc ...
        }
     );
公共类SomeClassMap:ClassMap
{
公共类映射()
{
CreateMap();
}
私有void CreateMap()
{
WithTable(“类”);
Id(x=>x.Id).GeneratedBy.Guid();
Map(x=>x.Name).WithLengthOf(100);
组件(x=>x.somecomponent,m=>
{
m、 Map(x=>x.Name).SetAttribute(“列”,“SomeComponentName”);
m、 Map(x=>x.Summary).SetAttribute(“列”,“SomeComponentSummary”);
等
}
);

有没有一种方法可以设置“SomeComponent”前缀,而不必在SetAttribute中定义它们?

这里有一些很好的信息:这似乎就是您想要做的

特别是本示例中演示的操作方法:

public class EmployeeMap : ClassMap<Employee>
{
    private Action<ComponentPart<Address>> MapAddress(string columnPrefix)
    {
        return a =>
               {
                   a.Map(x => x.AddressLine1, columnPrefix + "AddressLine1");
                   a.Map(x => x.AddressLine2, columnPrefix + "AddressLine2");
                   a.Map(x => x.PostalCode, columnPrefix + "PostalCode");
                   a.Map(x => x.City, columnPrefix + "City");
                   a.Map(x => x.Country, columnPrefix + "Country");
               };
}

public EmployeeMap()
{
    Id(x => x.Id);
    Map(x => x.FirstName).CanNotBeNull().WithLengthOf(20);
    Map(x => x.LastName).CanNotBeNull().WithLengthOf(20);

    Component<Address>(x => x.HomeAddress, MapAddress("Home_"));
    Component<Address>(x => x.WorkAddress, MapAddress("Work_"));
}
公共类EmployeeMap:ClassMap
{
私有操作映射地址(字符串列前缀)
{
返回a=>
{
a、 映射(x=>x.AddressLine1,columnPrefix+“AddressLine1”);
a、 映射(x=>x.AddressLine2,columnPrefix+“AddressLine2”);
a、 映射(x=>x.PostalCode,columnPrefix+“PostalCode”);
a、 地图(x=>x.城市,列前缀+城市);
a、 地图(x=>x.国家,列前缀+国家);
};
}
公共雇员地图()
{
Id(x=>x.Id);
Map(x=>x.FirstName).CanNotBeNull().WithLengthOf(20);
Map(x=>x.LastName).CanNotBeNull().WithLengthOf(20);
组件(x=>x.HomeAddress,MapAddress(“Home_”);
组件(x=>x.WorkAddress,MapAddress(“工作地址”);
}

}

没有任何隐含的内容。自动映射可以做到这一点,但不是常规映射。我创建了自动映射,以便您可以跟踪此项目的状态。

正确的项目站点是。该链接指向不再存在的票证,而不是项目本身。顺便说一句,James,组件前缀已断开: