Столбец Foreignkey в модели отношения объектов в C # - PullRequest
1 голос
/ 08 августа 2011

почему в ORM (модель отношения объекта) Модель в этом примере издатель столбца Foreignkey в классе книги - это класс издателя, в то время как мы можем использовать длинный тип (в издателе базы данных - 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; }
}

1 Ответ

1 голос
/ 08 августа 2011

Это должно сделать вашу жизнь проще.В вашей базе данных таблица BOOK имеет PublisherId, который является внешним ключом таблицы PUBLISHER.Чтобы избежать необходимости писать реляционные объединения в коде C #, как это требуется в SQL, ваш класс 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);
...