0

我想使用 jaydata JSLQ(JavaScript 语言查询)将一对多的列表展平PostPostData我的 ViewModel中

我的 EF 实体如下所示:

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"

我希望客户端中的视图模型如下所示:

{id:1, title:'foo'}

这意味着,我想在 PostData 上放置一个仅返回 FieldName==10 的过滤器,并且我想将其展平为一个简单的对象。

我该怎么做?

context.Posts.toArray(function(posts){console.dir(posts);})

返回一个帖子对象数组。接下来是什么?

4

1 回答 1

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( ... )
于 2012-06-28T11:15:15.760 回答