1

なぜORM(オブジェクト関係モデル)では、ブッククラスのこのサンプルの外部キー列パブリッシャーはパブリッシャーのクラスですが、長いタイプ(データベースパブリッシャーではforeignkeyとBigint)を使用できるのはなぜですか?

public class Publisher 
{
    [XmlAttribute]
    public string Title { get; set; }
    [XmlAttribute]
    public string Address { get; set; }
}


public class Book 
{
    [XmlElement]
    public Publisher Publisher { get; set; }  ******
    [XmlAttribute]
    public string Title { get; set; }
    [XmlAttribute]
    public short PrintYear { get; set; }
    [XmlAttribute]
    public short Pages { get; set; }
    [XmlAttribute]
    public string ISBN { get; set; }
}
4

1 に答える 1

1

これはあなたの人生を楽にするためです。データベース内のテーブルBOOKにはPublisherId、テーブルへの外部キーであるがありますPUBLISHER。SQLで行う必要があるように、C#コードでリレーショナル結合を記述する必要をなくすために、Bookクラスには参照型のプロパティがあるPublisherため、直接アクセスできます。これは、OODの原則にも準拠しています。

例:

クラスにBookがのみある場合public int PublisherId {get;set;}、発行者のを取得するには次のコードが必要になりますTitle

Book book = ... 
Publisher publisher = context.Publishers
                             .Where(x => x.PublisherId == book.PublisherId)
                             .SingleOrDefault();
if(publisher != null)
    Console.WriteLine(publisher.Title);

現在のBookクラスでは、これは短くて読みやすくなっています。

Book book = ...
Publisher publisher = book.Publisher;
if(publisher != null)
    Console.WriteLine(publisher.Title);
于 2011-08-08T16:05:49.290 に答える