【问题标题】:C# where does the dbml file come from?C# dbml 文件来自哪里?
【发布时间】:2023-03-28 07:40:01
【问题描述】:

我目前正在学习 C# 和 LINQ。我有很多关于他们的问题。基本上,我需要一个循序渐进的教程。

  1. 我想dbml文件是数据库的配置文件。如果我双击dbml 文件,VS 将在设计图中打开它。我可以在这里创建/删除/修改表吗?我可以使用add new item 添加LINQ to SQL Classes 以获得dbml 文件吗?

  2. 下一步是什么?在数据库中生成表?生成 SQL 脚本?生成cs文件?什么时候?怎么样?

【问题讨论】:

    标签: c# linq linq-to-sql


    【解决方案1】:

    DBML 文件与数据库服务器完全无关。这完全是客户端的事情。它本质上是关于数据库中的表以及如何将它们映射到 .NET 对象的一组信息。

    当然,您可以从数据库中拖动表并让 Visual Studio 自动为您推断一些信息,但更改文件不会影响数据库。您也可以在没有任何数据库的情况下从头开始创建 DBML 文件。

    在内部,DBML 文件只是一个 XML 文件,它由 Visual Studio 输入自定义工具,并从中生成代表数据库的 LINQ 对象模型的 .cs 文件。

    【讨论】:

    • 有没有办法绕过 dbml 文件来创建 .cs 文件?我的同事有这个命令: sqlmetal /server:dwasilew\sqlexpress /database:Ande /code:Ande.cs 我猜 Ande.cs 文件是在这个命令中创建的。没有提到 .dbml。
    • @5Yrs: SQLMetal 是一种工具, (1) 可以从数据库中生成dbml (2) 可以从dbml 中生成代码 (3) 可以简化上述两个过程和直接从数据库输出源文件。 Visual Studio 基本上用 GUI 做同样的事情。您可以在此处查看 SQLMetal 的不同命令行参数:msdn.microsoft.com/en-us/library/bb386987.aspx
    【解决方案2】:

    DBML 文件是根据您的数据库架构定义类的映射。是的,它定义了您的(默认)连接字符串,但它根本不“配置”您的数据库。

    Linq to Sql 使用数据库优先的方法,在这种方法中,您拥有数据库并在 DB 模式之后为您的类建模。通过将表格拖放到那里,您将自动创建类,因此您不必输入它们。您可以从那里更改属性名称等,并且属性与其正确的数据库列名称之间的映射将保持不变。

    【讨论】:

      【解决方案3】:

      此链接了解如何在您的项目中创建 dbml 文件:

      http://dotnetlearners.com/linq/linq-to-sql-creating-dbml-file

      实现 LINQ to SQL 首先我们必须创建 DBML 文件,DBML 文件包含 C# 源代码,允许我们将 LINQ 查询写入 SQL。这是生成dbml文件的分步过程。

      右键单击项目(或项目文件夹)并选择选项添加新项目。

      添加新项目 选择 LINQ to SQL 类模板并命名为 MyDB.dbml。

      linq-to-sql-classess

      显示以下确认信息时单击是。

      对话框

      MyDB.dbml 文件将被添加到 App_Code 文件夹下。

      dbml

      展开服务器资源管理器并右键单击数据连接并选择选项添加连接。

      添加连接

      将打开添加连接弹出窗口,提供 SQL Server 详细信息并选择然后单击确定按钮。

      服务器详细信息

      Data Connections 下将添加数据库,如下所示。

      服务器浏览器

      在左侧窗格中拖动表格,如果存在主键和外键关系,则会自动显示如下所示。

      拖动表格

      将存储过程拖到右侧窗格中。

      拖动存储过程

      会自动生成相关的C#代码,打开MyDB.designer.cs文件即可看到。

      dbml-designer-cs

      【讨论】:

      • 请在此处添加有意义的代码和问题描述。不要只链接到需要修复的网站 - 否则,一旦问题得到解决或您链接的网站无法访问,这个问题将对未来的访问者失去任何价值。
      【解决方案4】:

      是的,DBML 文件是在您添加 Linq to SQL 类时创建的。在设计器中(当您双击 DBML 文件时您会看到)您可以将表(从服务器资源管理器)拖到它上面。然后,您可以在代码中引用这些表。那里有很多入门教程:

      查看此 SO 问题了解详情:

      https://stackoverflow.com/questions/481244/can-anyone-recommend-a-good-tutorial-for-learning-linq2sql

      【讨论】:

      • 好吧,这篇文章已有 7 年历史 :-)。按照今天的标准,Linq to SQL 被认为是死的。除非您使用的是遗留代码,否则我会考虑使用其他东西,例如 Entiy Framework。
      • 链接也失效了。
      【解决方案5】:
      猜你喜欢
      • 2018-12-22
      • 2010-09-26
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2010-09-21
      • 2014-04-24
      • 2015-07-13
      • 1970-01-01
      相关资源
      最近更新 更多