1

これらのモデルがあるとしましょう:

public class TextDocument
{
   public int Id { get; set; }
   public string Name { get; set; }
   public virtual List<Paragraph> Paragraphs { get; set; }
}

public class Paragraph
{
   public virtual TextDocument Document { get; set; } 
   public int Order { get; set; }
   public string Text { get; set; }
}

public class Image
{
    public virtual Paragraph Paragraph {get; set; }
    public virtual TextDocument Document { get; set; } 
    public string Url { get; set }
}

そして今、、TextDocumentsParagraphsImages、、などでParagraphsナビゲートする必要があります。TextDocumentsImagesParagraphsImagesTextDocuments

モデルを「接続」するにはどうすればよいですか? 私が求めているのは:

  1. DataContext を作成するには? TextDocument のみですか?
  2. これを使用して、たとえば、IDなどを知らずにすべての画像を取得するにはどうすればよいですか?
4

2 に答える 2

0

あなたは正しい方向に進んでおり、モデルを接続したように見えます。このクラス定義に問題なくプロパティをナビゲートできると思います。

欠落しているものの1つは、段落クラスと画像クラスの主キー定義(Id)です。

編集1:

追加できるのは

public DbSet<TextDocument> {get;set;}

DbContextで、したがって、画像に移動できるようになります。同様に、画像のDbSetはDbContextにのみ配置でき、TextDocumentまでナビゲートできるはずです。あなたが達成しようとしていることは明確ではありません。編集2:

public class Paragraph
{
   public int Id {get; set;} // add this
   public virtual List<Images> Images {get; set;} // and add this
   public virtual TextDocument Document { get; set; } 
   public int Order { get; set; }
   public string Text { get; set; }

}
于 2013-02-14T15:33:17.050 に答える
0

質問は明確ではありません。また、あなたのモデルは少し奇妙です。TextDocumentのリストは含まれませんImage。ただし、どちらにもとImageへの戻るナビゲーションが含まれています。にリストを追加してから削除する必要があると思います。このようにして、sが s を持つようになり、s がsを持つようになります。ParagraphTextDocumentImageParagraphTextDocumentImageDocumentPharagraphPharagraphImage

public class TextDocument
{
   public int Id { get; set; }
   public string Name { get; set; }
   public virtual List<Paragraph> Paragraphs { get; set; }
}
public class Paragraph
{
   public virtual TextDocument Document { get; set; } 
   public int Order { get; set; }
   public string Text { get; set; }
   public virtual List<Image> Images { get; set; }
}
public class Image
{
    public virtual Paragraph Paragraph {get; set; }
    public string Url { get; set }
}

コンテキストを作成するには、DbContext から派生するクラスを作成し、エンティティ セットを追加します。

public class MyContext : DbContext
{
    public DbSet<Image> Images { get; set; }
    public DbSet<TextDocument> TextDocuments { get; set; }
    public DbSet<Paragraph> Paragraphs { get; set; }
}

id が 3 の特定のテキスト ドキュメントの画像を取得します。

using(MyContext context = new MyContext())
{
    var temp = context.TextDocuments.Include("Paragraph.Image").Where(q => q.Id == 3);
    var imageList = temp.Paragraphs.Select(q => q.Images).ToList();
}

すべての画像を選択します。

using(MyContext context = new MyContext())
{
    var allImages = context.Images.ToList();
}

EF Code First に関する優れたチュートリアルがあるこのブログ投稿を参照してください。

于 2013-02-14T15:35:11.863 に答える