使用Linq恢复不同类型集合的最佳方法是什么? 我有聊天表,其中包含不同类型的聊天消息:
表的列是:
我从视图模型中返回该信息:
<md-row *cdkRowDef="let row; columns: displayedColumns;"
class="mat-elevation-z4 card">
当用户发送视频消息时,我希望有更多信息可以带回来(视频的第1帧图像的网址,以秒为单位的长度)。
我不知道如何以及在哪里存放这些额外的视频信息?我可以专门添加2个Nullable额外列,当行是视频时,但是你知道这是一个非常难看的选择。
或者我可以为这两列添加一个全新的表,但是当该行是视频类型时,我将如何有条件地加入此表? 我是否对此表执行左外连接(链式语法Linq中的交叉连接)?如果我还决定将图像额外信息移动到它自己的表中,那么它也会是其他左外连接吗?
this link建议使用基类来产生如下效果:
var query = _context.Chats.Select(c => new ChatViewModel {
//
});
然后加入到该基类,但在该示例中,PeopleExtendedInfoA和PeopleExtendedInfoB属于同一类型,而我的视频类型与其他2种类型(文本和图像)不同。
请注意:从服务器返回行时,必须考虑所返回聊天记录的创建日期顺序。
你有什么建议?
答案 0 :(得分:2)
我的第一反应是将URL和持续时间作为子表返回。如果消息不是视频消息,则子表中将没有行。