2

我正在使用顺从映射开始一个新项目。我有一组常见的字段被拉到组件映射中,如下所示:

public class AuditTrailMap : ComponentMapping<AuditTrail>
{
    public AuditTrailMap()
    {
        Property(x => x.Created, xm => xm.NotNullable(true));
        Property(x => x.Updated, xm => xm.NotNullable(true));
        Property(x => x.UpdatedBy, xm => { xm.NotNullable(true); xm.Length(128); });
        Property(x => x.UpdatedBySID, xm => { xm.NotNullable(true); xm.Length(128); });
        Property(x => x.OnBehalfOf, xm => { xm.NotNullable(true); xm.Length(128); });
        Property(x => x.OnBehalfOfSID, xm => { xm.NotNullable(true); xm.Length(128); });
    }
}

但是,在我的类映射中,似乎没有任何 Component 方法的重载可以接受其中之一,也没有神奇地被拾取。如何使用此映射?

4

1 回答 1

0

我将创建一个有助于映射组件的扩展方法:

public static class AuditTrailMapingExtensions
{
    public static void AuditTrailComponent<TEntity>(
        this PropertyContainerCustomizer<TEntity> container,
        Func<TEntity, AuditTrail> property)
    {
        container.Component(
            property,
            comp => 
            {
                    comp.Property(x => x.Created, xm => xm.NotNullable(true));
                    comp.Property(x => x.Updated, xm => xm.NotNullable(true));
                    comp.Property(x => x.UpdatedBy, xm => { xm.NotNullable(true); xm.Length(128); });
                    comp.Property(x => x.UpdatedBySID, xm => { xm.NotNullable(true); xm.Length(128); });
                    comp.Property(x => x.OnBehalfOf, xm => { xm.NotNullable(true); xm.Length(128); });
                    comp.Property(x => x.OnBehalfOfSID, xm => { xm.NotNullable(true); xm.Length(128); });
            });
    }

然后像这样使用它:

class MyEntityDbMapping : ClassMapping<MyEntity>
{
    public MyEntityDbMapping ()
    {
        // ...
        this.AuditTrailComponent(x => x.AuditTrail);
    }
}

这种帮助方法有一个很大的优势:您可以添加其他参数,例如有条件地设置非空约束。

于 2012-10-08T10:15:15.683 回答