我有4个子类:Video
, Image
, Note
, and Form
。每一项都包含不同类型的数据。例如,Image
类包含磁盘上图像文件的路径和图像属性,以及Form
类包含表单字段值。然而,每个项目之间的共同元素是 GPS 坐标和航向,因此我有以下抽象基类:
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
然而,我感到困惑的是如何在数据库中对此进行建模。目前我有一张名为Events
(为了举例,假设一个活动是生日聚会)和 4 张桌子(Videos
, Images
, Notes
, and Forms
)。每个表都有一个外键链接回Events
' 首要的关键。
使用 LINQ-to-SQL,我为每个表获得 5 个类。例如,如果我只想要一种类型的数据,这很好Event.Images
,但我想做的是计算“内容”的总数Event
有并获取 GPS 坐标。我可以通过使用来轻松计数Event.Images.Count() + Event.Videos.Count() + ...
,但我不能对 GPS 坐标做同样的事情。有什么方法可以对数据库进行建模,以便我可以为每个项目使用基类,并且当我需要查看其数据时仍然能够获取单个强类型项目?
Martin Fowler 的《企业应用程序架构模式》中记录了三种不同的模式,每种模式都有不同的权衡:
- 单表继承 http://martinfowler.com/eaaCatalog/singleTableInheritance.html
- 类表继承 http://martinfowler.com/eaaCatalog/classTableInheritance.html
- 具体表继承 http://martinfowler.com/eaaCatalog/concreteTableInheritance.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)