2010-09-11 73 views
2

我目前正在研究ASP.NET MVC 2和LINQ to SQL。这一切看起来很酷。但是我有一些应用程序和开发生命周期问题。Visual Studio中的DB设计策略

目前,我在SqlServer Management Studio中设计DB。 然后我通过删除并重新导入修改后的表来更新我的DBML文件。

问题:

  1. 我无法找到如何简单地更新整个DBML架构。
  2. 我的DBML然后失去了一些我所做的更改,例如重命名关系成员或将某些int映射到枚举。
  3. 如果我想要一个SQL脚本部署我的数据库(或保持架构在源代码控制下),我需要使用'Genererate Script'SSMS向导,这将是很酷的,如果a)它可以记住我的设置和b )它可以是自动的。

我应该换一种方式(从我的DBML开始并生成数据库)?我应该去其他框架(NHibernate的?我可以用它一些Linq的味道?)

另外,我读LINQ2SQL已经过时,赞成Linq的实体。这是否意味着让我的生活变得更加美好的终极工具将再次让我在长期内失去时间?

谢谢你脱掉一些灯。

回答

0

作为后续,只想说,我终于找到并爱上了Huagati DBML/EDMX Tools

说实话,我必须说,自从我购买它以来,价格已经大幅上涨。无论如何,我相信它仍然是值得的。

对于正在寻找相同种类的MySQL(或其他)工具的人,DevArt是你的朋友。

2

如果你是从头开始你的DB模式由Scottgu概述的你可以考虑“Code-First Development with Entity Framework 4"

我一直在使用这一个新的项目,我发现它非常有益的。 - 尤其是对于测试

我从简单的POCO类开始表示我的数据,然后随着项目的进展,我将允许EF4使用我的“内存中”示例数据将模式生成为“真实”数据库...现在,我正在使用两者的混合在内存POCO(用于开发和TDD)和自动生成的DB Schema(自动加载更多的“现实”数据)中进行演示等等,目前为止我非常高兴

0

对LINQ2SQL有很多意见,以及它是“过时”还是“停止”。但它仍然是.NET框架和一个很好的工具,所以如果它适合你的需求,那么你应该使用它。坦率地说,实体框架还不完美,如果你不需要它提供的额外的灵活性,那么它不值得痛苦。如果我有一个中小型项目,那么我肯定会再次使用LINQ2SQL(并通过EF)。

至于你的问题,是的,你会失去任何名称或不同类型的映射,当你删除并重新添加一个表。我所知道的选项是

  1. 仅删除/重新添加已更改的表(并非全部表)
  2. 尝试改变到位DBML表,而不是删除/重新添加。您可以添加和删除列,更改列名称和数据类型,在DBML上添加所有关系。

我喜欢渲染到数据库之前创建对象的类JcMalta的建议,但如果你发现SQL Studio中动作要快发展,那么它可能仅仅是最快的创建表有拖放到你的DBML。这是一个令人讨厌的问题,它必须改变数据库中的某些东西,并将更改推送到代码中,但代码生成工具非常好,并消除了大部分的痛苦。

+0

柯克,谢谢你的想法。然而,“code-gen工具非常好,带走了大部分的痛苦”是我不同意的地方:该工具无法正确更新我的DBML。这是一个真正的痛苦! – 2010-09-13 11:48:25

+0

正如您所指出的那样,我知道您将失去任何名称更改和枚举类型映射,但是这不是什么大不了的事情?如果它太糟糕了,那么你可以手动修改DBML来匹配数据库对象(而不是使用代码生成) – 2010-09-13 22:22:53