1

次のモデル例(これはofficial ASP.NET siteから取得)では、Blogs(親)テーブルとPosts(子)テーブルの間の外部キー関係を定義していることを理解します。しかし、以下のBlogクラスでは、public List<Post> Posts { get; set; }プロパティの使用は何ですか?私は、このプロパティを削除して、このモデルのうち、SQL Serverデータベースを生成する場合、私はまだ、データベースが正常にBlogテーブルEntity Frameworkコードでの外部キーの定義

namespace EFGetStarted.AspNetCore.NewDb.Models 
{ 
    public class BloggingContext : DbContext 
    { 
     public BloggingContext(DbContextOptions<BloggingContext> options) 
      : base(options) 
     { } 

     public DbSet<Blog> Blogs { get; set; } 
     public DbSet<Post> Posts { get; set; } 
    } 

    public class Blog 
    { 
     public int BlogId { get; set; } 
     public string Url { get; set; } 

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

    public class Post 
    { 
     public int PostId { get; set; } 
     public string Title { get; set; } 
     public string Content { get; set; } 

     public int BlogId { get; set; } 
     public Blog Blog { get; set; } 
    } 
} 
+1

[リスト投稿]は、[ナビゲーションプロパティ](https://msdn.microsoft.com/en-us/library/jj713564(v=11113).aspxf)で、投稿からのアクセスに便利ですブログ。 – Jasen

+1

@Jasenあなたのリンクが壊れている、それはhttps://msdn.microsoft.com/en-us/library/jj713564(v=vs.113).aspx – Tim

+0

であるはずです。 URL。 – Jasen

答えて

3

ナムへの外部キーとしてPostsテーブルにBlogIdで作成された

Postsプロパティを見ることができますBlogクラスのインスタンスは、Blogオブジェクトのインスタンスから直接投稿にアクセスする必要がある場合に便利です。あなたはそれが適切に作成されるデータベースを防ぐことはできません削除した場合

var blogs1 = context.Blogs 
         .Include(b => b.Posts) 
         .ToList(); 

:記事をロード

を含める方法を使用して遅延ロードまたはEntity Frameworkの積極的なロードを経由して行うことができます。

+0

実際にEfCoreは遅延読み込みをサポートしていませんが、Includeを使用する必要があります。 BlogIdに基づいて作成されたFKを明確にするために、Postsプロパティは単なるナビゲーションプロパティです。 – alanh

+0

@VivienChevallierあなたの質問は私にすべてのブログの投稿を教えてくれると言っていますか?または、あなたの質問は、各ブログと各ブログに関連する全ての投稿を私に与えるということです。つまり、ブログと投稿の表の間にLINQ JOINを書く別の方法です。あなたの回答を「回答」としてマークする前に、その回答を理解しようとしています。 – nam

+0

@nam私の質問は次のように言っています:各ブログと各ブログに関連する全ての投稿を私に教えてください。 –

関連する問題