您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

C#Select子句返回系统异常,而不是相关对象

C#Select子句返回系统异常,而不是相关对象

IQueryable<T>对后备数据存储区执行查询(在本例中为sql RDBMS)。您的sql RDBMS不了解IEquatable<T>*,并且不能使用其实现:查询函数必须可翻译为sql,并且obj.Equals(objectName)不可翻译。

您可以转换IQueryable<T>IEnumerable<T>并在内存中执行查询,但是这样效率太低。您应该将签名更改为Expression<Func<TSource, bool>>谓词,然后将名称检查器传递给它:

public static T Read<T>(Expression<Func<T,bool>> pred) {
    using (ISession session = NHibernateHelper.OpenSession()) {
        return session.Query<T>().SingleOrdefault(pred);
    }
}

现在,您可以按以下方式使用此方法

Make snake = Read<Make>(x => x.Name == "snake");

*另外,IEquatable<T>显示方法中未使用your :该Equals(string)方法可以作为的实现IEquatable<string>,但在您的Make类实现的接口列表中未提及。

c# 2022/1/1 18:47:15 有275人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶