应该/可以生成一个类的数据库模式吗?

时间:2009-07-17 14:08:11

标签: database-design orm code-generation

我使用Visual Studio类图表设计了一些类。现在我想使用ORM和其他持久性机制来保存这些数据。我想知道是否有一种方法可以根据我的类中的属性生成SQL,因为它们很好地代表了所需的数据库结构。这将为我节省大量的手动SQL输入,并给我一个很好的开始。

我没有从数据库模型开始,因为我想让我的持久性与实际的“域层”分离(不确定这是否是正确的命名)。

ORM映射器(LLBLGen)然后可以基于此模式生成编码,我只需要将生成的对象映射到持久性接口。

这是一个好主意,还是我走错了路?

我找到了一个似乎可以完成工作的工具(MindScape LightSpeed),但不幸的是它只适用于VS2008。

3 个答案:

答案 0 :(得分:4)

有许多ORM可以从域模型类生成数据库模式。此外,还有一些ORM专门为这种开发方式而设计。它是“Model First”“Code First”概念,有些人认为它是数据库应用程序开发的未来,因为LINQ现在正在取代SQL。例如,下一版本的Entity Framework将完全支持这一概念。我建议尝试DataObjects.Net,它会自动生成和升级数据库模式并支持LINQ查询。

答案 1 :(得分:1)

这取决于。如果项目很小,那么你的截止日期很紧。当然。但是,生成的代码几乎总是比手写代码更难维护。这与数据库模式生成相同。看看你的项目范围。甚至可能生成数据库,看看你是否喜欢它的样子。然后自己决定。重新评估您的下一个项目。一种尺寸并不适合所有人。

答案 2 :(得分:1)

这是一个坏主意。类设计和数据库设计不是一回事。

就个人而言,我在概念级别使用免费的Visual Studio加载项NORMA进行设计。它将从概念模型生成模式,也可以生成类。

它生成的类对我的口味来说有点沉重,但事实证明,如果你不担心XSLT,可以自定义代码生成。

由于对象角色建模的性质,您对模型的约束可用于推断数据库模式和“类”模型。