最佳实践:如何通过业务层和数据层插入多个表?

时间:2010-02-10 23:21:31

标签: class insert

我曾经是一名开发人员和兼职数据库设计师,但已经很多年了,我正在重新学习......

我正在构建一个Web应用程序,并且有一个Person(实际上是“Profile”)表,其中包含许多子表,这些子表与我的Person表具有N:N关系,例如:   FavoriteSports   乐器   ArtisticSkills

在阅读了Scott Mitchell在www.asp.net上的优秀数据访问教程后,我想设计我的应用程序,经过深思熟虑的数据访问(使用表适配器)和业务逻辑(使用类)图层。

我挂断的地方是设计类和表适配器。这里的“工作单元”更像是一个真实的对象,它不直接与我的基于表的类或数据访问对象对齐。所以我想我所看到的是需要建立一个不围绕表格建模的类,而是围绕现实生活中的对象(我的Profile + FavoriteSports + MusicalInstruments + ArtisticSkills)。

我真正想要的是一本好书或网站,介绍如何做到这一点。具体来说,我如何构建一个支持这些子记录的类(作为集合?)。我想我理解这些概念 - 我只需要一些如何将其付诸实践的指导。

我能要求的最好的答案会让我指出一本书(C#,最好是),这本书的所有复杂性都是如此 - 非常确定我已经超越了“初学者”这本书了。

谢谢 -

-Pete

2 个答案:

答案 0 :(得分:1)

很明显,您是否可以按照NHibernate之类的ORM工具进行操作。

关键是要考虑表格而不是对象。

听起来你有一个带有子集的Person类,用于Skills的类或接口:

public class Person
{
   public IList<Skill> Skills { get; set; }
}

这是一种多对多的关系,但您可能不需要技能来跟踪与其相关联的人数。

答案 1 :(得分:1)

不幸的是,一本书可能无济于事。我建议你去阅读这些书籍,以便了解RDBMS和OO的两个世界。表和业务实体可能不是1:1的地图!

Patterns of Enterprise Application Architecture

Domain-Driven Design: Tackling Complexity in the Heart of Software

.NET Domain-Driven Design with C#: Problem - Design - Solution

希望有所帮助。