(LINQ-To-SQL)首先创建类,数据库表第二,如何自动连接两个?

时间:2009-09-08 23:21:22

标签: asp.net linq-to-sql

我首先使用LINQ-To-SQL图形设计器创建数据模型,方法是使用右键单击 - > Add-> Class。我的想法是,我将首先使用测试存储库设置所有内容,设计整个网站,然后作为最后一步,使用LINQ-To-SQL类创建数据库作为数据库表和关系的模型。我的理由是编辑类很容易,但很难修改数据库表(特别是如果已有数据),所以通过最后编写数据库部分,设计结构变得更加容易。

我的问题是,一旦我创建了数据库表,是否有自动链接两者的方法?我知道你可以手动填写LINQ-To-SQL实体的类属性,但如果你有很多表需要处理,这非常麻烦。另一个选择是删除手动创建的类并将表从数据库拖到设计器中以自动生成类,但我不确定这是否是最好的方法。

3 个答案:

答案 0 :(得分:1)

根据您的数据库权限,您可以将datacontext的DeleteDatabase()和CreateDatabase()方法称为重新同步类和表的一种不正确的方法。当您在数据库中有实际数据时,这不是一个选项,但在您处于开发阶段时确实有效。

答案 1 :(得分:1)

Linq to Sql旨在成为数据库上相对较薄的ORM层。虽然你当然可以只添加属性到数据上下文并将它们用作一种模拟,但你是对的,它并不是很容易使用。

您可能希望查看存储库设计模式,而不是仅依赖于Linq到Sql生成的类来使您不受数据库实现的影响。它允许您在数据库,域模型和中间层之间实现平滑分离;我现在已经在两个项目上使用它了,并且能够(大部分)自上而下构建所有内容,将实际数据库保留为最后一个。下面是关于模式的一个很好的教程的链接(比我在这里可以写的更好)。

https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx

答案 2 :(得分:0)

查看我的加载项(您可以从http://www.huagati.com/dbmltools/下载),同一网站也提供免费的45天试用许可证。

它可以使用SQL-DDL语句生成SQL-DDL diff脚本,用于仅使用L2S模型中已更改的部分更新数据库(例如,添加缺少的列,缺少表,缺少FK等),而不是L2S - 从头开始​​重新创建整个数据库的开箱即用支持。

它还支持以其他方式同步;从数据库更新模型。