Fluent nhibernate Fluent Nhibernate组件前缀
有没有办法在fluent中设置组件的列前缀。例如: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
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,组件前缀已断开: