从.NET和VS中的逻辑模型轻松创建数据库表

时间:2011-03-10 23:54:48

标签: c# .net linq-to-sql entity-framework

背景

我开始为ASP.NET MVC网站创建逻辑数据库模型。我使用了随VS一起提供的Entity框架的可视化设计器,因为我之前使用过它。

但是现在我已经有33个课程而且还没有完成(包括很多继承和很多关联)。我担心手动设置所有表映射而不是生成数据库表对我来说太复杂和耗时。我没有经验 - 我已经用另一种方式完成了:数据库表中的类,我花了很多时间让它在一个较小的项目中工作。

问题:

如何在.NET / VS中轻松快速地为逻辑模型(类图)创建数据库表?如果它可以自动生效会很棒。我从未使用LinqToSQL可视化设计器,似乎没有关于如何从LinqToSQL类创建数据库表的Web上的参考。有可能吗?如果没有,是否有任何方法可以自动创建具有Entity框架的数据库表 - 而无需指定表映射?

还有一个问题:如果我使用LinqToSQL类,那么每次更改属性时都要对数据库进行更改吗?或者是在那里进行一些缓存?

3 个答案:

答案 0 :(得分:5)

实体框架有一个名为“模型优先”的概念,它从您的模型生成数据库模型,因此得名。

您可以在此处阅读:http://msdn.microsoft.com/en-us/data/ff830362

然而,我个人最喜欢的对象关系映射器是NHibernate,加上Fluent NHibernate。它们有一个概念,您可以使用域模型而不是数据模型,并使用约定来控制映射。它非常整洁。您可以在此处查看此代码,开始使用一些非常好的示例:https://github.com/sharparchitecture/Northwind/tree/master/app

对于你所说的情况,Linq2Sql太有限了。它无法从代码生成数据模型。实际上,Linq2Sql以相反的方式工作 - 它从您的数据模型生成一组类,就像Entity Framework一样。

在您明确选择执行此操作之前,Linq 2 SQL或实体框架都不会提交任何内容。它们都有一个对象上下文的概念,它跟踪所做的所有更改。当您调用“保存”时,它们会将这些更改转换为SQL,然后在数据库中执行。

答案 1 :(得分:1)

就像MikeEast一样,我对Fluent NHibernate有很好的体验。

在我的项目中,我使用Automapping功能,它允许我几乎随意更改我的数据模型,并自动更新数据库模式。

没有SQL,不用担心外键等等 - 我喜欢它!

Fluent NHibernate Automapping

答案 2 :(得分:0)

最后我坚持使用Entity框架 - 一旦我学会了如何处理数据库连接,表生成就变得毫无根据......