在VB中使用NHibernate时的LINQ字符串比较

在VB中使用NHibernate时的LINQ字符串比较,linq,nhibernate,Linq,Nhibernate,在对NHibernate的linq表达式的where部分执行字符串比较时遇到问题 from x in NhibernateObject where x.StringCol = "value" select x 当它运行时,它会返回一个关于转换为整数的运行时错误。我在网站上找到了一篇关于这个问题和解决方案的帖子 但是我的问题是什么是“访问者”,我应该写什么代码来实现上面文章中强调的解决方案-这里缺少链接 访问者是一种设计模式。你可以在这里或这里找到它的描述 如果我正确理解了您链接的文章(尚未完全

在对NHibernate的linq表达式的where部分执行字符串比较时遇到问题

from x in NhibernateObject
where x.StringCol = "value"
select x
当它运行时,它会返回一个关于转换为整数的运行时错误。我在网站上找到了一篇关于这个问题和解决方案的帖子


但是我的问题是什么是“访问者”,我应该写什么代码来实现上面文章中强调的解决方案-这里缺少链接

访问者是一种设计模式。你可以在这里或这里找到它的描述


如果我正确理解了您链接的文章(尚未完全阅读),则需要更改NHibernate以解决此问题。

访问者是一种设计模式。你可以在这里或这里找到它的描述


如果我正确理解了您链接到的文章(尚未完全阅读),则需要更改NHibernate以解决此问题。

访问者模式的定义是:“表示要在对象结构的元素上执行的操作。访问者允许您定义新的 操作而不更改其操作的元素的类别。”


要更改的访问者的命名空间为NHibernate.Linq.Visitors。使用VB而不是带有NHibernate.Linq的C#可能会有更多的困难,因为VB3并不支持C#3的所有功能。如果您使用.Net 4.0(当然也可以使用c)

访问者模式的定义是:“表示要在对象结构的元素上执行的操作。访问者允许您定义新的 操作而不更改其操作的元素的类别。”

要更改的访问者的命名空间为NHibernate.Linq.Visitors。使用VB而不是带有NHibernate.Linq的C#可能会有更多的困难,因为VB3并不支持C#3的所有功能。如果您使用.NET4.0(当然也可以使用c)

Martin是正确的,您必须修改NHibernate.Linq源代码,这些问题就会得到解决。ExpressionVisitor是您必须修改的NHibernate.Linq库中的类的名称。获取v1.0.0.4000的NHibernate.Linq源代码并修改NHibernate.Linq.Visitors.ExpressionVisitor,插入下面的代码作为VisitBinary方法的第一行:b=FixVbStringComparison(b);还包括博客文章中FixVBStringComparison的实现。很抱歉,我没有在博客文章中发布DLL——这对我来说是非技术性的。Martin是正确的——您必须修改NHibernate.Linq源代码。ExpressionVisitor是您必须修改的NHibernate.Linq库中的类的名称。获取v1.0.0.4000的NHibernate.Linq源代码并修改NHibernate.Linq.Visitors.ExpressionVisitor,插入下面的代码作为VisitBinary方法的第一行:b=FixVbStringComparison(b);还包括博客文章中FixVBStringComparison的实现。很抱歉,我没有在博客文章中发布DLL——这对我来说是非技术性的。