- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取所有修补程序并包含属性 Available
为 1 的所有详细信息(与其关联)。这是我的代码:
public static IList<HotFix> GetAllHotFix()
{
using (Context context = new Context())
{
return context.HotFix
.Include(h => h.AssociatedPRs)
.Include(h => h.Detail.Where(d => d.Available = 1))
.ToList();
}
}
我收到了这个错误。我尝试使用 .ThenInclude 但无法解决它。
在 HotFix 中我有:
[Required]
public virtual List<HotFixDetail> Detail { get; set; }
最佳答案
虽然您忘记编写类定义,但似乎您有一个 HotFix
类。每个 HotFix
都有一个由零个或多个 AssociatedPRs
组成的序列以及一个由零个或多个 Details
组成的序列。
每一个Detail
都至少有一个数字属性Available
。
您需要所有HotFixes
,每个都有其所有AssociatedPR
,以及所有具有属性Available
的Details
值等于 1(您不是说 available 是 bool 值吗?)
在使用 Entity Framework 时,人们倾向于使用 include 来获取项目及其子项目
。这并不总是最有效的方法,因为它获取表的完整行,包括您不打算使用的所有属性。
例如,如果您有一对多关系,学校及其学生
,那么每个学生
都会有一个学校的外键
该“学生参加”。
因此,如果学校 [10] 有 1000 名学生
,则每个学生
都将拥有一个指向学校
的外键,其值为 10。如果您使用 Include
获取 School [10] 及其 Students
,则该外键值也会被选中,并发送 1000 次。您已经知道它将等于 Schools
主键值,因此传输该值 10 到 1001 次会浪费处理能力。
When querying data, always use Select, and Select only the properties you actually plan to use. Only use Include if you plan to update the fetched data.
另一个好建议是使用复数来描述序列,使用单数来描述序列中的一项
您的查询将是:
var result = context.HotFixes.Select(hotfix => new
{
// Select only the hotfix properties you actually plan to use:
Id = hotfix.Id,
Date = hotfix.Date,
...
AssociatedPRs = hotfix.AssociatedPRs.Select(accociatedPr => new
{
// again, select only the associatedPr properties that you plan to use
Id = associatedPr.Id,
Name = associatedPr.Name,
...
// foreign key not needed, you already know the value
// HotFixId = associatedPr.HotFixId
})
.ToList(),
Details = hotfix.Details
.Where(detail => detail.Available == 1)
.Select(detail => new
{
Id = detail.Id,
Description = detail.Description,
...
// not needed, you know the value:
// Available = detail.Available,
// not needed, you know the value:
// HotFixId = detail.HotFixId,
})
.ToList(),
});
我使用了匿名类型。您只能在定义匿名类型的过程中使用它。如果需要返回获取的数据,则需要将所选数据放入一个类中。
return context.HotFixes.Select(hotfix => new HotFix()
{
Id = hotfix.Id,
Date = hotfix.Date,
...
AssociatedPRs = hotfix.AssociatedPRs.Select(accociatedPr => new AssociatedPr()
{
... // etc
注意:您仍然不必填写所有字段,除非您的功能需求明确说明了这一点。
函数的用户可能会感到困惑,因为他们不知道哪些字段将被实际填充,哪些字段不会被填充。另一方面:当向数据库添加项目时,他们已经习惯了不填写所有字段,例如主键和外键。
作为并非所有字段都被填充的解决方案,一些开发人员设计了一个额外的层:存储库层(使用存储库模式)。为此,他们创建了代表人们想要放入存储和想要保存到存储中的数据的类。通常这些人对数据保存在关系数据库中(带有外键之类的东西)不感兴趣。因此存储库类不会有外键
存储库模式的优点是,存储库层隐藏了存储系统的实际结构。它甚至隐藏了它是一个关系数据库。它也可能位于 JSON 文件中。如果数据库发生变化,存储库层的用户不必知道这一点,并且可能也不需要更改。
存储库模式还可以更轻松地模拟数据库以进行单元测试:由于用户不知道数据位于关系数据库中,因此对于单元测试,您可以将日期保存在 JSON 文件或 CSV 中- 文件或其他任何内容。
缺点是您需要编写额外的类来保存要放入存储库或从存储库中获取的数据。
添加这个额外层是否明智,取决于您期望数据库将来更改布局的频率,以及您的单元测试需要有多好。
关于c# - Include 属性 lambda 表达式 [...] 无效。该表达式应该代表属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57479695/
我正在尝试在我的 UITableView 上调用 reloadData。我在没有界面生成器的情况下制作我的应用程序。 此代码适用于 Interface Builder,但似乎没有。 当我将我的代码与我
有人可以解释 UIAlertView 的委托(delegate)是如何工作的吗?它是自动调用还是我必须调用它?例如: - (void)alertView:(UIAlertView *)alertVie
编辑:好吧,根据其他人的建议,我创建了一个最小的示例......并且它有效,因此我将在未来与任何人分享它。这是工作代码: #include #include using namespace std
unicode 是 ,它被用在 XML 文档中。 最佳答案 查看图表:unicodelookup.com 换行符。 关于html - unicode字符是什么 代表?,我们在Stack Overflo
我有一个应用程序,可以以编程方式在配置的 Facebook 页面上发帖。我的应用程序显然已批准管理页面和发布页面权限,并且我正在使用页面访问 token 从现在开始一切正常,但最近当我在页面提要上发布
代表 NCAA 男子篮球分组的最佳数据库模式是什么?如果您不熟悉,请点击以下链接:http://www.cbssports.com/collegebasketball/mayhem/brackets/
所以我一直在阅读这个关于如何使用 Frida 的教程:https://www.frida.re/docs/functions/我遇到过以下情况: $ ./client 127.0.0.1 connec
委托(delegate)函数返回之前是否需要调用replyHandler?我需要进行几次 Web 服务 API 调用才能回复,以下实现正确吗? func session(_ session: WCSe
下面提到的是我的 textField 委托(delegate)方法,我正在使用 IQKeyBoardSwift 作为智能键盘。我尝试移除我的键盘,但我仍然没有收到任何关于接受“开始触摸”的方法的调用
我有一个表格 View ,其中几乎没有用于数据输入的文本字段和弹出窗口。我想将其中一些表示为强制性的。我不知道如何讨厌星号。任何帮助将不胜感激。 最佳答案 我认为你可以使用自定义 UITableVie
例如,我知道如何使用 numpy 对数组进行切片 v[1, :, :] 现在我想要一个函数将切片 (1,1,None) 作为输入并返回 v[1,:,:] 问题是我不知道如何表示省略号 最佳答案 您可以
修订... 应用程序的关键是与数据库服务器通信。服务器对应用程序的响应都是 XML 格式的。有几个屏幕。例如,屏幕 1 列出了用户的信息,屏幕 2 列出了用户过去的交易,允许新交易,等等。 这是我的
我想知道映射/表示内存的最佳方式是什么。我的意思是,例如,如何描述一个结构及其所有字段都被序列化。 我正在创建一个 RPC 库,它将使用 dwarf 调试数据创建客户端和服务器,因此我需要创建一个函数
如果我有一个实现了两个协议(protocol)的 View Controller : @interface CustomerOperationsViewController : UIViewContr
在 Objective-C 中我可以做这样的事情: @property (nonatomic, weak) id someObject; 如何在swift中做到这一点?我试过这个: let someO
我成功地使用了相当棒的 connection:didReceiveAuthenticationChallenge: NSURLConnectionDelegate 委托(delegate)方法。很酷。
我正在寻找原始数据类型的 @NonNull 等效 Java 注释。我知道原始数据不能为 null,但我找不到替代方法。 我想要实现的在逻辑上等同于: int mPageNumber; public v
我正在学习 Git,如果我能描述代表 Git 存储库的数学结构,那就太好了。例如:它是一个有向无环图;它的节点代表提交;它的节点有代表分支等的标签(每个节点最多一个标签,没有标签使用两次)。(我知道这
我看过很多与委托(delegate)相关的帖子,我想知道引用它们的正确方法。假设我有一个声明如下的对象: @interface MyViewController : UITableViewContro
我有这个类: public class Order { int OrderId {get; set;} string CustomerName {get; set;} } 我也声明下面的变
我是一名优秀的程序员,十分优秀!