gpt4 book ai didi

c# - NHibernate QueryOver 别名问题

转载 作者:太空狗 更新时间:2023-10-29 22:37:51 27 4
gpt4 key购买 nike

我在 Visual Web Developer 2010 Express 的 .Net 4 目标项目中使用来自 NuGet 的最新版本的 NHibernate (3.3.1.4000)。

当我尝试按照我看到的定义别名的示例进行操作时,在使用 lambda 设置别名时出现异常(参见屏幕截图)。

Shows error 'Cannot convert lambda expression to type 'string'...

如您所见,我遇到了错误 Cannot convert lambda expression to type 'string because it is not a delegate type

我在代码顶部引用了 LINQ 命名空间:

using System.Linq;
using System.Linq.Expressions;

对可能导致问题的原因有什么想法吗?

最佳答案

为了使用像role这样的变量在表达式中,你必须先定义它,就像这样......

Role roleAlias = null; // <-- these two lines are missing from your code.
Person personAlias = null;

var x = session.QueryOver<Role>(() => roleAlias)
.JoinAlias(r => r.People, () => personAlias)
// ...

ISession.QueryOver<T>(...)有四个重载:

  • .QueryOver<T>()
  • .QueryOver<T>(Expression<Func<T>> alias)
  • .QueryOver<T>(string entityName)
  • .QueryOver<T>(string entityName, Expression<Func<T>> alias)

显然是因为它不知道是什么role是,假设您正在尝试使用 .QueryOver<T>(string entityName)过载,因此出现“无法将...转换为类型‘字符串’”错误消息。

关于c# - NHibernate QueryOver 别名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com