C#中对象关系模型中的外键列

时间:2011-08-08 16:01:32

标签: c# asp.net object-relational-model

为什么在ORM(对象关系模型)本示例中的外键列发布者中的模型是一类发布者,而我们可以使用long类型(在数据库发布者中是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 个答案:

答案 0 :(得分: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);