在 Fluent NHibernate 中将 IUserType 映射到组件属性
我正在尝试为州和国家/地区代码实现一个 IUserType
,这将允许我访问两个字母的代码(存储在数据库中的内容)以及全名。我正在遵循 NHibernate 3.0 Cookbook (p. 225) 中的示例,但我的问题是我的 StreetAddress
类当前在我的自动映射配置中映射为组件:
public override bool IsComponent(Type type)
{
return type == typeof(StreetAddress);
}
将此类标识为组件,我不知道如何使用 IUserType
作为组件类的属性,因为该类没有显式映射。我无法告诉流畅的 NHibernate 使用 IUserType
规范。
I'm trying to implement an IUserType
for states and country codes that will allow me to access both the two-letter code (what's stored in the database) as well as the full name. I'm following the example in the NHibernate 3.0 Cookbook (p. 225), but my problem is that my StreetAddress
class is currently mapped as a component in my automapping configuration:
public override bool IsComponent(Type type)
{
return type == typeof(StreetAddress);
}
With this class identified as a component, I don't know how I can use an IUserType
for the component class's property, since that class isn't explicitly mapped. There's nowhere that I could tell fluent NHibernate to use the IUserType
specification.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
@Firo 很接近,但事实证明有一个更简单的解决方案。这里有两个步骤。首先,我必须告诉 Fluent NHibernate 不要映射位于我的域层中的
State
和Country
类:接下来,我只需为
State
和Country
类创建约定 :代码>IUserType类。事实证明,这比 @Firo 建议的更容易:这些
IUserTypes
的定义是从原始问题中引用的食谱中取出的,但如果您不想阅读它:那就得出来自
GenericWellKnownInstanceType
:这些类的存储库只是
State
和Country
对象的一对ReadOnlyCollection
。再次,来自食谱:希望这对那里的人有帮助。
@Firo was close, but there turned out to be a much easier solution. There were two steps here. First, I had to tell Fluent NHibernate not to map the
State
andCountry
classes, which reside in my domain layer:Next, I simply had to create the conventions for the
IUserType
classes. This turned out to be easier than @Firo suggested:The definition of those
IUserTypes
was pulled out of the cookbook referenced in the original question, but in case you don't want to read it:And that derives from
GenericWellKnownInstanceType
:The repositories for these classes are just a pair of
ReadOnlyCollection
of theState
andCountry
objects. Again, from the cookbook:Hopefully this helps someone out there.
我无法测试它,但使用约定应该是可能的
i couldnt test it, but it should be possible using a convention