1

これは簡単なことだと思いましたが、丸一日で、まだ答えが見つかりません。非常に簡単な例を見てみましょう。クラスがありPostます:

   public class Post
{
    public string Content { get; set; }

    public int BlogId { get; set; }
    public virtual Blog Blog { get; set; }
}

そしてまたBlogクラス:

    public class Blog
{
    public string Name { get; set; }

    public virtual List<Post> Posts { get; set; }
}

これで、(特にdataGridViewで)データを使用しているときにBlog、dataGridViewでプロパティの名前を設定するだけで、すべてのプロパティの値にアクセスできます。直接アクセスできない唯一のデータは、郵便から外部キーを介して取得したデータです。

Post.ContentDBのすべての行を取得するにはどうすればよいですか?Postこれで、dataGridViewでのみ設定できるようになりました。これは。のようなものを返しますSystem.Data.Entity.DynamicProxy...

4

1 に答える 1

1

このようなDTOタイプを作成できます

public class PostDto
{
    public string Blog { get; set; }
    public string Content { get; set; }
}

によってそれを入力します

var dtos = from b in db.Blogs
           from p in b.Posts
           select new PostDto {
                                 Blog = b.Name,
                                 Content = p.Content
                              };

dtos.ToList()DGVにバインドします。DGVは拡張可能な行をサポートしていないため、フラットな構造しか表示できません。ブログ名を繰り返したくない場合は、2つのグリッドを持つマスター/詳細レイアウトを検討してください。

于 2013-02-20T21:35:52.870 に答える