Fluent nhibernate 在fluent nhibernate中设置复合键属性的类型和长度
在hbm映射中,我可以Fluent nhibernate 在fluent nhibernate中设置复合键属性的类型和长度,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,在hbm映射中,我可以 <composite-id> [..] <key-property name="someStringProperty" column="somefield" type="AnsiString" lenght="8"/> </composite-id> 看来你不能。你只能走到 CompositeId()
<composite-id>
[..]
<key-property name="someStringProperty"
column="somefield"
type="AnsiString"
lenght="8"/>
</composite-id>
看来你不能。你只能走到
CompositeId()
.KeyProperty(x => x.Id1, "ID1")
.KeyProperty(x => x.Id2, "ID2");
没有类型或长度选项
但在版本1.1中,似乎有一种可能性
CompositeId()
.KeyProperty(x => x.Id1)
.KeyProperty(x => x.Id2, kp => kp
.ColumnName("ID2")
.Type(typeof(string)));
我更新到了1.2,并且能够将密钥属性的类型设置为AnsiString
CompositeId()
.KeyReference(x => x.ViewDto, "type_id")
.KeyProperty(x => x.FieldName, p =>
{
p.ColumnName("field_name");
p.Type("AnsiString");
});
但是fluent
Type(typeof(string))
仍然会产生一个nvarchar映射,而hbmType=“AnsiString”
会产生一个varchar映射!?这么说根本不收费?好像是这样。尽管看起来他们可能会在将来添加自定义类型。谁知道呢。您可能希望在开始讨论时将其添加到API中。确定。这个答案是正确的。目前无法在复合键部件上设置length属性,只能设置.net类型。有关更多信息的链接,请参见问题的编辑。我看到了.ColumnName()和.Type(),但没有看到.Length()。使用流利的NHibernate 1.1.1.694。我想它还没有落在行李箱里。这很漂亮。非常感谢。fluent wiki上没有提到这一点。
CompositeId()
.KeyReference(x => x.ViewDto, "type_id")
.KeyProperty(x => x.FieldName, p =>
{
p.ColumnName("field_name");
p.Type("AnsiString");
});