我想使用jaydata JSLQ(JavaScript语言查询)将一对多Post
的{{1}}列表展平到我的ViewModel
我的EF实体看起来像这样:
PostData
我的数据库包含以下记录:
public partial class Post
{
public Post()
{
this.PostData = new HashSet<PostData>();
}
public int Id { get; set; }
public virtual ICollection<PostData> PostData { get; set; }
}
我希望客户端中的视图模型看起来像这样:
Table: Post
Id;...
1;...
Table: PostData
Id;PostId;FieldType; FieldValue
1; 1; 10; "foo"
2; 1; 12; "bar"
3; 1; 34; "blah"
这意味着,我想在PostData上放置一个只返回FieldName == 10的过滤器,我想将其展平为一个简单的对象。
我该怎么做?
{id:1, title:'foo'}
返回一个post对象数组。下一步是什么?
答案 0 :(得分:1)
这是通过EF中的SelectMany()函数实现的,并且JayData尚不支持此方法。但是,您可以通过直接查询aganst PostData并过滤Post属性来实现相同的输出。
context.PostDatas
.filter( function(pd) { return pd.FieldType == 10 } )
.map( function(pd) { return {
PostID: pd.Post.Id,
PostDataId: pd.Id,
Title: pd.FieldValue }})
.toArray( ... )