0

jaydata JSLQ (JavaScript 言語クエリ) を使用して、1 対多のリストを ViewModel にフラット化PostPostDataたい

私の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'}

つまり、FieldName==10 のみを返すフィルターを PostData に配置し、それを単純なオブジェクトにフラット化したいということです。

どうすればいいですか?

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

投稿オブジェクトの配列を返します。次は何?

4

1 に答える 1

1

これはEFのSelectMany()関数で実現されており、このアプローチではまだJayDataでサポートされていません。ただし、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 に答える