Of course.. here it is:
var mapper = new ConventionModelMapper();
Type baseEntityType = typeof (Entity);
mapper.IsEntity((t, declared) =>
baseEntityType.IsAssignableFrom(t) && baseEntityType != t && !
t.IsInterface);
mapper.IsRootEntity((t, declared) =>
baseEntityType.Equals(t.BaseType));
mapper.BeforeMapManyToOne +=
MapperBeforeMapManyToOneForeignKey;
mapper.BeforeMapBag += MapperBeforeMapBagForeignKey;
mapper.BeforeMapProperty += MapperBeforeMapProperty;
mapper.BeforeMapClass += MapperBeforeMapClass;
mapper.Class<Entity>(map =>
{
map.Id(x => x.Id,
m =>
{
m.Generator(Generators.Guid);
m.Column("ID");
});
map.Version(x => x.Version,
m =>
{
m.Generated(VersionGeneration.Never);
m.Column("VERSION");
});
});
private void MapperBeforeMapClass(IModelInspector modelInspector, Type
type, IClassAttributesMapper map)
{
map.Table("[" +
type.Name.SplitCamelCaseAndUnderscore().ToUpper() + "]");
}
private void MapperBeforeMapProperty(IModelInspector modelInspector,
PropertyPath member, IPropertyMapper map)
{
map.Column("[" +
member.ToColumnName().SplitCamelCaseAndUnderscore().ToUpper() +
"]");
}
private void MapperBeforeMapBagForeignKey(IModelInspector
modelinspector, PropertyPath member, IBagPropertiesMapper map)
{
map.Key( km =>
km.Column("[" +
member.GetContainerEntity(modelinspector).Name.SplitCamelCaseAndUnderscore().ToUpper()
+ "_ID]"));
}
private void MapperBeforeMapManyToOneForeignKey(IModelInspector
modelInspector, PropertyPath member, IManyToOneMapper map)
{
map.Column("[" +
member.LocalMember.Name.SplitCamelCaseAndUnderscore().ToUpper() +
"_ID]");
}
where SplitCamelCaseAndUnderscore is an extension method on string:
public static string SplitCamelCaseAndUnderscore(this string str)
{
return Regex.Replace(Regex.Replace(str, @"(\P{Ll})(\P{Ll}
\p{Ll})", "$1_$2"), @"(\p{Ll})(\P{Ll})", "$1_$2");
}
On May 29, 11:40 am, "c.sokun" <[email protected]> wrote:
> Could you share your configuration?
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.