我刚从NHibernate 2.1更新到NHibernate 3.1。我发现使用Linq的equals运算符没有实现其他类型的字符串。
我在互联网上找到article来解决这个问题。这适用于基本类型,但现在我想比较一个自定义实体,我无法让它工作。
我尝试了一些实现但没有工作:
ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(<CustomEntity>(0)))
ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(typeof(CustomEntity))
我想要执行的查询如下:
Session.Query<SomeEntity>().Where(x => x.CustomEntity.Equals(CustomEntity);
如何扩展equals以允许此操作而不是获取NotSupportedException?
答案 0 :(得分:3)
.Equals方法无法转换为SQL,当您执行Query&lt;&gt;()方法时,系统会执行该操作。尝试使用这样的等式:
Session.Query<SomeEntity>().Where(x => x.CustomEntity.Id == CustomEntity.Id);