我對我的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