2011-08-08 12 views
1

ORM(オブジェクト関係モデル)の中でなぜこのサンプルのモデルブッククラスの外部キー列パブリッシャーはパブリッシャーのクラスですが、ここではlong型を使用できます(データベースパブリッシャーではforeignkey Bigint)?C言語のオブジェクト関係モデル内の外部キー列

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; } 
} 

答えて

2

これはあなたの人生を楽にするためです。あなたのデータベースでは、テーブルBOOKにはテーブルPUBLISHERの外部キーであるPublisherIdがあります。 SQLで行う必要があるように、C#コードにリレーショナル・ジョインを書く必要を避けるために、Bookクラスは参照型のプロパティーPublisherを持っており、直接アクセスすることができます。これはOODの原則にもより適合しています。

例:現在のBookクラスに

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

、これはに短く、簡単です:あなたのクラスBookだけpublic int PublisherId {get;set;}を持っていた

場合は、出版社のTitleを取得するには、次のコードが必要になります読む:

Book book = ... 
Publisher publisher = book.Publisher; 
if(publisher != null) 
    Console.WriteLine(publisher.Title); 
関連する問題