问题标签 [objectquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1724 浏览

entity-framework - 从 EntityFramework ObjectQuery 获取 SQL 命令文本和参数

我有一些 EF 无法支持的查询:空间、索引提示等。不过,大多数数据都是 EF 友好的,我可以使用 linq 提供程序。

示例:我有 Person、PersonAddress 和 Address 表。在地址上,我有一个空间索引,必须用于定义搜索区域。基于此,我想进一步过滤,例如 Person.BirthDate。我已经在 T-SQL 中实现了这个,但只有固定参数。

相反,我想组合空间查询和实体框架查询,为此我需要从 ObjectQuery 获取 SQL 命令文本和参数。当我有这些组合时,这些将很容易。不幸的是,我只能使用 ObjectQuery.ToTraceString() 获取命令文本。

我正在使用linqpad,我看到它能够同时获取参数和文本,所以这一定是可能的。

实现这一目标的最佳方法是什么?

0 投票
1 回答
674 浏览

asp.net-mvc - 将单独的属性链接到 Entity Framework / .NET MVC 中的同一个表

我花了好几个小时试图找到这个问题的答案,结果却一无所获。

我对 .NET 和 MVC 完全陌生——我完成了 MvcMusicStore 教程,现在开始研究一个更复杂但类似的项目。我这样说只是为了说明我在这方面的经验和知识水平较低,希望任何回应都能够体谅这一点。

无论如何,我遇到的问题是我有一个表“Fixtures”,它有两个属性“TeamId1”和“TeamId2”,它们都映射到另一个表“Team”。

我想要的是每个夹具还包括 Team1 和 Team2 的团队数据。到目前为止,我一直在使用 ObjectQuery 的 Include 方法来执行类似的操作,没有任何问题。

但是,我发现 .NET 或 MVC 或实体框架或其他任何东西在我这样做时并不高兴。经过大量实验,我认为它仅在外键与其所指的表具有相同名称时才有效。基本上我的属性必须具有名称“TeamId”,否则它将不起作用。如果我没有另一个必须映射到该表的属性,这将不是问题。我显然不能在一个表中有两个同名的属性。所以我被困住了。

我只能假设可以使用“TeamId”以外的属性名称映射到表,但我找不到任何说明/以前的帖子/文档来解释如何执行此操作。

我已经考虑过分解我的夹具数据并拥有一个夹具表然后是一个单独的表来保存团队 ID、分数等的可能性,但是这似乎有点矫枉过正,因为每个夹具永远不会有两个以上的团队。所以我称之为B计划。

如果可能的话,我宁愿不回避这个问题——因为使用 EF 和 ObjectQuery 似乎并非不合理。我也知道我可以手动创建查询,指定连接。不幸的是,我对 LINQ 的经验是有限的,到目前为止,我每次尝试时都无法在一张表上进行多个联接。

所以我真正需要知道的是,是否有一些设置或代码可以用来实现上述目标,而无需求助于 LINQ 或重组我的 Fixtures 表。

编辑: 相关机型截图

此图显示了相关模型。就目前而言:这可行,但是查询显然只返回一个链接到“TeamId1”列的团队实例。注释代码显示了我在模型中还需要具备的内容(就我之前有限的经验而言)。这样我的模型就拥有两个独立的团队,它们链接到两个独立的列。

0 投票
1 回答
1341 浏览

entity-framework-4 - 使用 EF 4 和存储库模式的对象查询模式

关于存储库模式和查询对象模式的问题。我正在使用 EF 4,并使用 VS 2010 中的 ADO.NET POCO 实体生成器从我的数据库模型生成了我的 POCO 类。edmx 文件和 tt 文件(POCO 类)位于 2 个不同的项目中。

我的存储库是特定于域的,例如 DocumentRepository 和 UserRepository。我的数据库模型与我的域模型的不同之处在于我已经实现了映射器,以便将域对象转换为一个或多个数据库表(反之亦然)。一个例子是我的 Document 域类在数据库中被建模为 3 个表(因此也是 POCO 类)。

在这种情况下使用域对象时,您将如何实现查询对象模式?我看到它的方式我必须基于 POCO 类而不是域类编写查询对象?但这不会破坏存储库模式吗?

0 投票
2 回答
3572 浏览

c# - IQueryable 在调用 Count c# 时返回 null

我在尝试从以下查询中获取计数时遇到问题:

其中 UsersView 是一个从名为 users 的 EF 实体填充的类(请参阅上面代码中的第一行)

这是 UsersView 类的类定义:

正如我所说,尝试执行 foo.Count() 行返回 Null 异常,这可能是因为 ConferenceRole 列允许数据库中的 Null。

现在我无法理解的是,当我直接在 ObjectQuery 上调用相同的查询时,会返回记录计数(即调用 foo2.Count()),没有任何异常。

是否可以使用上述相同的查询但使用 IQueryable usersView 对象?

(对我来说使用 usersView 对象而不是直接查询entities.users 实体至关重要)

编辑

下面是来自 PopulateUsersView 方法的代码

谢谢

更新...

谢谢大家,我终于找到了一个很好的答案来解决 IQueryable 和 ObjectQuery 对象之间的区别。

作为一种解决方案,我正在检查 ConferenceRole 是否为空,然后像你们中的许多人所说的那样使用 contains 方法进行检查。

0 投票
1 回答
246 浏览

c# - 使用 Include 时出现 ObjectContext Closed 错误?

我正在尝试为实体框架创建一个通用的 Get 方法,它具有动态WhereInclude. 我正在使用下面的代码,但是当我尝试访问包含列表中的导航属性时,我收到有关关闭对象上下文的错误

.Include()应该加载这些对象,所以我不需要保持 ObjectContext 打开?

导致错误的代码:

我觉得我在这里一定犯了某种愚蠢的错误,因为我是 EF 的新手,并且仍在努力解决这个问题。

0 投票
1 回答
1770 浏览

c# - 在 C# 中查询对象的元素

当我尝试从 c# 中的对象检索查询结果时遇到问题。

我做了一个返回对象元素的 linq 查询,我想在 c#(服务器端)中获取所有元素的值......

我不能这样做,我不知道为什么!

我试过了:

和别的....

我可以看到对象类型是:

如何获取对象的值?

非常感谢!

0 投票
1 回答
620 浏览

entity-framework-4 - EF4 如何使用动态选择和 where 语句创建查询

我正在尝试为我的模型创建某种动态加载器,我可以在其中指定我需要的属性,它的主要目的是创建一个为单个模型REST API提供动态信息的动态加载器。JSON

API被例如访问 /api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo,bar,baz

为此,我使用了ScottGu's BlogDynamic LINQ中描述的类似方法,问题是我需要使用连接对多个表进行查询并从不同的表中加载数据,据我所知,在这种情况下我不能这样做。

现在我使用ObjectQuery<DbDataRecord>方法Entity SQL来创建我想要的查询,但在这种情况下我失去了编译器验证并且更难重构。

我的问题是,这种问题是否有最佳实践方案?用其他方法实现可能更简单ORM吗?

问候

鲁斯兰 A.

0 投票
3 回答
12691 浏览

c# - 将 Linq 结果直接序列化为 JSON

我正在开发一个执行 linq to sql db 并将结果放入 VAR 变量的 WebService。然后我想使用 javascript 序列化程序(c#)将 VAR 中的结果序列化为 json 格式。像这样的东西:

但我收到这样的错误响应:

考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。

如何将 LINQ 结果直接序列化为 JSON?非常感谢所有的答案!恩里科

0 投票
2 回答
555 浏览

c# - 如何在 Windows 7 中查找 WLAN 卡

下面的代码在 Win XP 中工作正常,直到确定 WLAN 卡,但在 Windows 7 中 wmiObjects 计数为零。

有没有人知道让它在 Windows 7 中工作?

0 投票
1 回答
181 浏览

security - 问题过滤 ObjectQuery.Include 权限业务逻辑方法

我在 BL 和实体框架 DAL 之间创建了中间件层,用于通过应用程序中的用户权限业务逻辑过滤数据。我的图层实现了具有“无过滤 ObjectSet”实例的 IObjectSet,并且只要使用 ObjectSet,过滤器表达式就会运行。所有工作炉排,而不是“包括”方法。我找到了一个解决方案,该解决方案创建了一个将“无过滤的 ObjectSet”转换为 ObjectQuery 并使用 ObjectQuery.Include 方法的扩展方法,但此解决方案可能会导致绕过权限过滤。

例如:

表名“Items”有列 {Item_Id,Owner,Item_Type_Id} 该表有一个权限逻辑,用户只能看到 Owner==user 的项目。表“Item_Types”没有权限逻辑。

通过这样做:PermittedDAL。Items.ToArray() – 仅获取 current_user==Owner 的项目。Item_Types.Include("Items") 问题!!- 我得到了所有的物品。

谢谢