首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架-用TPT设置加载子类实体

实体框架-用TPT设置加载子类实体
EN

Stack Overflow用户
提问于 2017-01-24 20:07:48
回答 1查看 65关注 0票数 2

我们的系统正在接收来自两个外部来源的输入(电话/网络提交)。

代码语言:javascript
复制
//  Table-Per-Type Hierarchy
public class Submission
{
    public int SubmissionId { get; set; }   // Primary Key
    public int? PersonId { get; set; }
    public int? CompanyId { get; set; }
    public long? EmployeeId { get; set; }
    public bool? Completed { get; set; }
    public string AbsenceReason { get; set; }
    public string AbsenceType { get; set; }
    public DateTime? AbsenceDate { get; set; }
}

public class CallSubmission : Submission
{
    public string CallerId { get; set; }
    public string PhoneNumber { get; set; }
    public DateTime? HangUp { get; set; }
    public DateTime? PickUp { get; set; }        
}

public class WebSubmission : Submission
{
    public string EmailAddress { get; set; }
    public string PhoneNumber { get; set; }
    public DateTime SubmissionDate { get; set; }
}

我的目标是检索所有提交在过去七天内使用皮卡/SubmissionDate,取决于提交的类型,我们正在处理。是否有可能通过一个LINQ语句来实现这一点?理想情况下,我希望避免在内存中加载两个不同的数据集。

语句--我希望集成

代码语言:javascript
复制
Users.Where(user => user.UserName == name)
     .SelectMany(user => user.Submissions)
     .OfType<CallSubmission)()
     .Where(call => call.PickUp >= startDate)

Users.Where(user => user.UserName == name)
     .SelectMany(user => user.Submissions)
     .OfType<WebSubmission>()
     .Where(web => web.SubmissionDate >= startDate)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 20:41:39

实际上(对我来说令人惊讶),您问的是什么是可能的(至少在最新的EF6.1.3中),因为支持C# isas运算符(基本上由OfType方法使用)。

代码语言:javascript
复制
var query = db.Users
    .Where(user => user.UserName == name)
    .SelectMany(user => user.Submissions)
    .Where(subm => (subm as CallSubmission).PickUp >= startDate
        || (subm as WebSubmission).SubmissionDate >= startDate);

重要的部分是使用as操作符而不是生成不受支持的异常的cast。不需要检查null,因为生成的SQL查询自然处理NULL的查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41838039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档