JayData一对多预测

时间:2012-06-27 17:05:25

标签: javascript jaydata

我想使用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对象数组。下一步是什么?

1 个答案:

答案 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( ... )