我对我的ID有一个约定,它会自动映射名称为Id
的属性作为标识符。随着需求的充实,我需要调整领域模型,所以我自然而然地去了网上,发现我需要创建一个继承自IAutoMappingOverride<T>
的类。自动映射约定可以与映射覆盖一起使用吗?
我约定:
public class PrimaryKeyConvention : IIdConvention, IIdConventionAcceptance
{
public void Apply(IIdentityInstance instance)
{
instance.Column("Id");
instance.GeneratedBy.SeqHiLo(instance.Name, "10");
}
public void Accept(IAcceptanceCriteria<IIdentityInspector> criteria)
{
criteria.Expect(x => x.Generator, Is.Not.Set);
}
}
我重写:
public class LocateMappingOverride : IAutoMappingOverride<Locate>
{
public void Override(AutoMapping<Locate> mapping)
{
mapping.Map(x => x.SendTo).Not.Nullable();
}
}
公约并按预期方式工作,如果我删除我的覆盖。
我得到的例外是The entity 'LocateMappingOverride' doesn't have an Id mapped. Use the Id method to map your identity property. For example: Id(x => x.Id).
。
是否可以将约定与映射覆盖一起使用?
可能要考虑通过代码映射内置的Nhibernate 3.2。 – Newbie