1
我有一个组合键实体,其中一个属性是一个int,另一个是枚举。枚举当前是按字符串映射的,但它需要是int。我有一个IUserTypeConvention已经这样做,但它不适用于组合键。如何使复合键枚举在流利的nhibernate中使用int与约定?
我有一个Accept()方法,可以正确定位带有枚举的复合键,但是我找不到Apply()代码。
public class CompositeKeyEnumConvention : ICompositeIdentityConvention, ICompositeIdentityConventionAcceptance
{
public void Apply(ICompositeIdentityInstance instance)
{
}
public void Accept(IAcceptanceCriteria<ICompositeIdentityInspector> criteria)
{
criteria.Expect(x => HasEnumKey(x));
}
private bool HasEnumKey(ICompositeIdentityInspector x)
{
if (x.KeyProperties.Count() > 0)
{
foreach (IKeyPropertyInspector inspector in x.KeyProperties)
{
if (inspector.Type.GenericArguments.Count() != 1)
continue;
if (EnumConvention.IsInt32EnumType(inspector.Type.GenericArguments.First()))
return true;
}
}
return false;
}
}
的枚举约定,工程的代码是
public void Apply(IPropertyInstance instance)
{
instance.CustomType(instance.Property.PropertyType);
}
我只是无法弄清楚如何做到这一点的复合键。
谢谢!
我不得不更换与此keymapping.Type行:keymapping.Type =新TypeReference(inspector.Type.GenericArguments.First()); – BradLaney 2012-01-05 22:38:06