【发布时间】:2015-12-03 15:27:01
【问题描述】:
所以我需要选择一个Task() 对象,它是Attachments() 对象,带有Include(),像这样:
var tmp = cntx.Tasks.Include( at => at.Attachments ).FirstOrDefault(t => t.Id == id );
它工作正常,MVC api 控制器可以将它序列化为 json,列出所有的 Attachmnet,基本上它工作得很好。
现在我的问题是,我需要在 Task() 中添加 3 个额外的字符串属性(为了更清楚的例子,我只使用下面的 +1 字符串)
public class TaskView : DataClasses.Task {
public string BusinessName { get; set; }
}
这些道具不是Task() 的导航属性,实际上它来自其他几个表。现在我可以将之前的查询与表格结合起来,但我不确定如何选择之前完全填充的 Task 对象,所有这些对象都是导航 Attachment() 对象,并将其转换为 TaskView obj,并添加了 BusinessName细绳。
有什么想法吗?
【问题讨论】:
-
BusinessName来自哪里?它是否来自以任何方式与Task相关的实体,是否可以从导航属性访问? -
不,它不能作为导航属性访问,它来自旧表,但我可以加入()它。如果需要,我可以重写基类,使其成为导航属性,但这需要一段时间,所以如果可能的话,我想要一个“更简单”的答案,比如 select( t => new TaskView { task = task.base() , 企业名 = 表名.prop })。如果可能的话,我不确定,我知道我可以选择 2 个对象到第三个对象中,但不能选择继承的孩子。
标签: c# entity-framework linq inheritance select