是先编写类还是先通过DB创建实体模型?

时间:2011-07-22 11:34:12

标签: wpf entity-framework-4.1

我正在编写我的第一个WPF应用程序。我还安装了Entity Framework(EF)4.1。我两个都是新手。我也学习通过参考示例代码来编写MVVM类。

我想知道是否应首先为Model,View和ViewModel设计类,或者首先设计数据库模式并使用EF自动生成类。推荐的方法是哪种?

我在Visual Studio解决方案中创建了三个文件夹,即:Model,View和ViewModel。我将为这些文件夹添加相应的类。对此有何建议?

1 个答案:

答案 0 :(得分:1)

Entity Framework 4.1中的主要功能是 Code-First 开发风格,我建议您在使用新应用程序时使用此功能,并且不需要现有的数据库架构从...开始。

这意味着您首先要设计模型类,使用数据注释 Fluent API 指定一些映射详细信息,然后让EF生成数据库和数据库模式。在许多情况下,您根本不需要数据注释或Fluent API,因为EF 4.1遵循一组映射约定,这意味着EF可以根据类和属性的命名约定推断出必要的数据库模式。这使得在许多情况下模型到数据库的映射非常容易。

在两种方法中 - 数据库优先或代码优先 - 您必须记住,您希望在两个世界之间进行有效的映射。您可以创建无法或不能轻松映射到关系数据库模式的模型类,另一方面,您可以创建难以或无法映射到模型类的数据库模式。因此,熟悉如何创建可以使用EF 4.1映射到数据库的模型类的示例是有意义的。

如果您想从数据库模式或模型开始,那么这有点像是一种品味问题(并且可能取决于您是否拥有可能不喜欢自动生成的数据库模式的强大的数据库管理员)。但在我看来,Code-First加速了你的开发。

修改

关于项目组织的问题:在一个(“WPF-UI”)项目中拥有视图和ViewModel是好的,因为它们无论如何都是紧密相连的。将模型和所有EF内容放在这个项目中也没错。但是有很好的理由将Model和EF转移到解决方案中的单独项目(类库)中。它允许您更轻松地拥有访问模型和数据库的其他应用程序(例如,简单的工具程序(控制台应用程序)来测试某些内容或对数据库进行一些操作)。

许多人还会投票将模型和EF分成单独的项目(“域或业务逻辑项目”和“EF持久层项目”或其他项目)。但既然你说你正在开始,这可能是太多的分层抽象,很快就会失控。如果你想要更强烈的关注点分离,你可以在以后的阶段重构。