我有以下需要转换为Entity SQL / eSQL的LINQ查询:
return (ObjectQuery<User>) from user in Users
where !user.Roles.Any(r => r.AnIntegerProperty < 0)
select user;
User.Roles是与Roles的n:m关系的导航属性,并且还有一个Role.Users导航属性。模型中没有User_Roles或Roles_User实体,我无法添加这些实体。
我也不能在这里使用LINQ语句,因为我需要添加.OrderBy(“它。”+ propertyname)(来自其他来源,也不能改变它)以后哪个是不可能的,如果ObjectQuery是用linq构建的。
那我该怎么把它翻译成eSQL呢?我在哪里可以找到好的eSQL样本?我一直搜索了一整天,并且必须承认eSQL引用很糟糕,而且网络上没有任何可用的示例。
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为动态linq库可能是解决方案:
您可以使用动态属性名称创建过滤表达式,因此无需进行翻译。
答案 2 :(得分:0)
我会写一些类似
的内容contexte.Users.Where("NOT EXISTS (SELECT VALUE r FROM it.Roles AS r WHERE r.AnIntegerProperty < 0)")
没有经过测试,但我已经尝试了类似的东西,所以这应该适合你。
答案 3 :(得分:0)
如果不知道用户和角色的具体内容,很难找到答案。但是,鉴于你所说的,将进行以下工作:
return (ObjectQuery<User>) from user in Users
where !(from role in dataContext.Roles
where role.AnIntegerProperty < 0
select role.UserId).Contains(user.UserId);