- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 SQL 查询转换为 Linq,但出现异常:
System.NotSupportedException:不支持使用本地集合的查询。
那么有没有办法以“合法”的方式重新表述查询?
感谢您的任何建议,
安德斯,丹麦
底部是我执行失败的代码。
我试图解决的逻辑问题是找到用户有权访问的“结构”,无论是通过直接访问还是通过具有访问权限的组的成员身份。我们没有嵌套组。
换句话说,如果满足以下任一条件,则用户应该具有访问权限:
- The user created the structure (id is 'stamped into' the structure record).
- An entry exists in the PermissionUsers table, linking the Permissions Table with the users table.
- an entry exists in the PermissionGroups table, linking the Permissions table with the Groups table and the user is referenced in the UsersGroups table, linking Users table with the Users table.
将权限/限制结果应用于可访问的项目是一个相对较新的事物,我们希望数据库能够完成繁重的工作;)。
[TestFixture]
public class LinqTest : CommandBasedIntegrationTestBase
{
[Test, Category("SuperIntegration"), RequiresSTAAttribute]
public void TestThat()
{
DbIntegrationTestHelper.SetState();
var dataContextProvider = ObjectFactory.GetInstance<IDataContextProvider>();
const int userId = 1;
var environment = ObjectFactory.GetInstance<IState>().DatabaseEnvironment;
var dataClasses1DataContext = dataContextProvider.GetContext(environment);
var idsByCreator = from r in dataClasses1DataContext.Structures where r.CreatedUserId == userId select r.StructureId;
var idsByUserAccess = from r in dataClasses1DataContext.PermissionUsers where r.UserId == userId select r.StructureId;
var idsOfGroupsContainingUser = from r in dataClasses1DataContext.UsersGroups where r.UserId == userId select r.GroupId;
var idsByGroupAccess = from r in dataClasses1DataContext.PermissionGroups where idsOfGroupsContainingUser.Contains( r.GroupId ) select r.StructureId;
var res = from s in dataClasses1DataContext.Structures
where
idsByCreator.Contains(s.StructureId) ||
idsByUserAccess.Contains(s.StructureId) ||
idsByGroupAccess.Contains(s.StructureId)
select s;
foreach (var structure in res)
{
Debug.WriteLine(structure.Name);
}
}
}
最佳答案
尝试JOIN
、UNION
示例
var ctx = dataContextProvider.GetContext(environment);
var byCreator = from r in ctx.Structures where r.CreatedUserId == userId select r;
var byUserAccess = from r in ctx.PermissionUsers
join s in ctx.Structures on r.StructureId equals s.StructureId
where r.UserId == userId select s;
var byGroups = from ug in ctx.UsersGroups
join pg in ctx.PermissionGroups on ug.GroupId equals pg.GroupId
join s in ctx.Structures on pg.StructureId equals s.StructureId
where ug.UserId == userId select s;
var res = byCreator.Union(byUserAccess).Union(byGroups);
更新
根据@Magnus 的评论,我已经删除了对 Distinct()
的不必要的调用。仅当使用 Concat()
而不是 Union()
时,才需要调用 Distinct()
。
关于.net - Linq - 'Queries with local collections are not supported' 时该怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157404/
我收到多行错误,指出它有重复的类 Duplicate class android.support.v4.accessibilityservice.AccessibilityServiceInfoCom
我的项目昨天运行良好,今天却出现以下错误。请帮忙。 出了什么问题:无法解析配置“:app:debugCompileClasspath”的所有文件。 Could not find support-v4.
错误:配置项目“:app”时出现问题。 Could not find support-v4.jar (com.android.support:support-v4:24.0.0). Searched
我正在使用 react-native-webrtc 运行示例应用程序模块。我正在尝试在 android 中运行该应用程序,但出现这样的错误... * What went wrong: A probl
错误:配置项目“:app”时出现问题。 Could not find support-v4.jar (com.android.support:support-v4:24.0.0). Searched
我克隆了我的项目并使用 Android studio 打开,但构建失败并出现以下错误并且同一个项目在其他项目上运行良好。 出了什么问题:无法解析配置“:app:flavorUnsignedReleas
我正在运行示例应用程序......我正在使用 this模块.....但是我收到这样的错误... FAILURE: Build failed with an exception. * What went
我有一个 Ionic 项目,在升级到 OSx Mojave 后,出于某种原因不再构建。 该项目基于 Ionic 3 构建。 我有 Cordova CLI 7.0.0 当我运行时 ionic cordo
我有一个 Ionic 项目,在升级到 OSx Mojave 后,出于某种原因不再构建。 该项目基于 Ionic 3 构建。 我有 Cordova CLI 7.0.0 当我运行时 ionic cordo
添加 Android 平台(ionic cordova platform add android)后,我构建了我的 Ionic 项目(ionic cordova build android),但出现错
这个问题在这里已经有了答案: Manifest merger failed : Attribute application@appComponentFactory - Androidx (14 个答
关于我的 Gradle 文件中的以下“complie”: dependencies { compile 'com.android.support:support-v4:25.3.1' }
有些困惑。 我想更频繁地使用@supports 但是...我不关心浏览器如何看待它。希望您能说清楚,如果可以的话谢谢您。 如果浏览器本身不理解@supports,它如何计算@support 'not'
我刚刚升级到 Dart 2 和最新版本的 Flutter,现在我无法构建我的应用程序。我在互联网上环顾四周,但仍然不明白为什么会发生这种情况。 我得到的错误是: FAILURE: Build fail
我正在学习 Firebase,但由于以下错误而陷入困境: Error:Failed to resolve: com.android.support:customtabs:25.4.0 Error:Fa
我在构建本周时出于某种原因尝试使用Cordova进行项目时遇到问题: cordova build android gradle获取com.android.support:support alpha而不
对应的androidx是什么com.android.support:support-compat 的图书馆实现push notifications ? 他们说here它是 androidx 的一部分,
我正在尝试为我的应用设置插桩单元测试。并且我已根据以下开发者站点链接添加了依赖项。 https://developer.android.com/training/testing/unit-testin
当我想使用 Proguard 规则生成签名的 APK(发布)时,我收到了以下错误消息: Cannot find a version of 'com.android.support:support-an
这个问题在这里已经有了答案: Failed to resolve: com.android.support:appcompat-v7:26.0.0 (14 个答案) Failed to resolv
我是一名优秀的程序员,十分优秀!