4

例で示す方が簡単です -- 私はコード ファーストを使用してデータベースを構築しています。私は次のクラスを持っています:

public class Blog
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string AuthorName { get; set; }
        public List<Post> Posts { get; set; }
        public string BlogCode
        {
            get
            {
                return Title.Substring(0, 1) + ":" + AuthorName.Substring(0, 1);
            }
        }
    }

    public class Post
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public virtual Blog Blog { get; set; }
    }

Post がパブリック仮想ブログ ブログを必要とする理由がわかりません。ブログに戻るためのデータベースの外部キーとして機能しますか? その場合は、Blog Id を使用するようです。

4

1 に答える 1

8

2 つのテーブルを関連付けて、外部キーを にPost関連付けることができBlogます。

を使用すると、オブジェクトからオブジェクトpublic virtual Blog Blog { get; set; }を参照して、のすべてのプロパティにアクセスできます。たとえば、 を 使用した場合、は単なる値になるため、これを行うことはできません。BlogPostBlogmyPost.Blog.Idpublic virtual int BlogId { get; set; }BlogIdint

ドメイン オブジェクトが遅延ロードされている場合、そのプロパティが使用されるまでmyPost.Blog、実際にはデータベースからのデータでハイドレートされません (つまり、Blogテーブルへの呼び出しはありません)。使用されるとすぐに、Entity Framework はデータベース呼び出しを行い、テーブルのデータでオブジェクトをハイドレートしBlogます。これは、ORM を使用する利点の 1 つです。データベース操作を処理しながら、コードに集中することができます。

于 2012-06-27T19:47:02.747 に答える