为什么在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; }
}
答案 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);