【发布时间】:2011-07-17 23:44:47
【问题描述】:
我刚刚从 NHibernate 2.1 更新到 NHibernate 3.1。我发现使用 Linq 的等号运算符并没有针对其他类型实现,然后是字符串。
我在网上找到了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?
【问题讨论】:
-
您不能或不想比较 CustomEntity 的 ID 是否有具体原因?
-
我在构建通用基础存储库时遇到了同样的问题。以前我会有一个接口,它定义了我的模型的 Id 属性,然后按照 x => x.Id.Equals(default(IdType)) 的行做一些事情,其中 IdType 是一个泛型类型
标签: c# linq nhibernate equals