首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate、Npgsql和inet

NHibernate、Npgsql和inet
EN

Stack Overflow用户
提问于 2009-09-02 20:26:03
回答 1查看 892关注 0票数 0

我正在用ASP.net MVC、NPgsql和NHibernate编写一个以PostgreSQL为数据库的web应用程序(使用VB.不是我的选择)。

其中一个表有两列,其类型为inet。在映射文件中,我尝试将其映射为字符串。这实际上很好,直到我不得不更新一个行。

我收到一条错误消息:“列"mycolumn”类型为inet,表达式为文本类型。“

我意识到,Npgsql需要IPAddress对象或NpgsqlInet对象。NpgsqlInet对象有一个接受字符串的构造函数,因此我尝试按照以下说明创建一个自定义用户类型:

http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx

get运行良好:

代码语言:javascript
复制
Public Function NullSafeGet(ByVal rs As System.Data.IDataReader, ByVal names() As String, ByVal owner As Object) As Object Implements NHibernate.UserTypes.IUserType.NullSafeGet
        Dim ip As NpgsqlInet = New NpgsqlInet(CType(NHibernateUtil.String.NullSafeGet(rs, names(0)), String))
        Return ip
End Function

如您所见,我将其作为字符串从数据库中提取,并将其用作构造函数的参数。

但是我被困在NullSafeSet方法上了。我不能使用NHibernateUtil.String.NullSafeSet方法,因为Npgsql希望将对象作为NpgsqlInet类型。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2009-09-02 21:56:30

您可以尝试以下几种方法:

如果可能,将参数类型设置为DbObject。这将使Npgsql不使用强制转换,这可能会使其像原始代码一样工作。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1369931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档