2009-12-08 87 views
0

我有一个域对象有一些Uri属性需要被持久化到一个Url表中,该表有几个Uri部分,这些属性在检索后需要重新组合。我可以很好地存储属性,但是如何告诉NHibernate如何重新创建Uri属性?您不能直接设置大部分Uri对象的属性。相反,url必须被汇编并传递给Uri构造函数。NHibernate persist System.Uri

回答

2

个人而言,我不觉得URI类型是超级有用的,但有一些我能想到的2种选择:

  1. 创建通过实施IUserType一个新的用户类型(见http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx - 搜索开放的实施它大约下降一半)
  2. 创建一个在NHibernate中映射的受保护的字符串属性,并在其周围封装一个公共Uri。

UPDATE

我还没有与此发挥。但是你正在寻找开放的,我认为你想看看执行ICompositeUserType代替IUserType的属性映射。想法(不是基于Uri,但可能适用于指针)http://www.lostechies.com/blogs/rhouston/archive/2008/03/23/mapping-timestamp-data-using-nhibernate-s-icompositeusertype.aspx

+0

这两种解决方案都不起作用,因为我需要将URL的各个部分作为列存储在数据库中供以后分析。 – Chris 2009-12-08 15:03:18

+0

啊,我错过了那部分,对不起。那么意图是根据uri的一部分来检索还是搜索?即从obj o where u.Uri.Host =='foo'? – 2009-12-08 15:45:51