如何从存在的.edmx文件连接到数据库?

时间:2016-04-01 05:50:21

标签: c# entity-framework

我们的构建工程师已经离开了另一家公司。

他将他的项目移交给我。 但我通常编码不使用EF,所以我不知道什么,他使用像EntityDataModel.edmx这样的实体文件包含所有数据。

我不知道如何连接到这个。 我通常通过connectionString = ...etc连接到SQL Server。 我也在他的应用程序中找到了这个字符串,如:

<connectionStrings><add name="PCApp_TaxitechEntities" connectionString="metadata=res://*/EntityModel.EntityDataModel.csdl|res://*/EntityModel.EntityDataModel.ssdl|res://*/EntityModel.EntityDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SDDMS-010\SQLEXPRESS;initial catalog=PCApp_Taxitech;user id=sa;password=;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

3 个答案:

答案 0 :(得分:3)

Edmx不包含任何数据,它只是模型定义文件。它定义了存储模型(数据库模式),概念模​​型(您的类)以及它们如何相互映射。

数据仍存储在底层DBMS中。在您的情况下,数据库应位于名为SDDMS-010的计算机上,该计算机运行名为SQLEXPRESS的MS SqL Server实例和名为PCApp_Taxitech的数据库。所以你应该首先访问该数据库。

如果您不关心数据,可以从概念模型生成存储:

https://msdn.microsoft.com/en-us/library/dd456815(v=vs.100).aspx

答案 1 :(得分:3)

在交付现有项目时,您应该做的第一件事就是熟悉该项目中使用的主要工具。您不会非常成功地在基于实体框架等重要工具的项目上进行攻击,而无需花费一些时间来了解该工具。打开包含EntityDataModel.edmx文件的项目,查看引用,查看正在使用的EntityFramework版本,选择您喜欢的学习方法(书籍,视频,博客文章,等等),并挖掘投入所需的时间学习如何使用该工具。

但那不是你问的问题。

app.config文件的这一部分提供了您需要的线索:

data source=SDDMS-010\SQLEXPRESS;initial catalog=PCApp_Taxitech;user id=sa;password=(redacted);
  • 您正在寻找名为PCApp_Taxitech
  • 的数据库
  • 托管在Microsoft SQL Server Express中(不是您熟悉的工具) 用?花些时间阅读它)
  • 托管在名为SDDMS-010
  • 的计算机上
  • 您拥有登录凭据:user id = sa,password =(redacted)

如果您可以访问SDDMS-010机器,那么您就可以开展业务了。您可以在SQL Server Management Studio中打开数据库(服务器名称:SDDMS-010 \ SQLEXPRESS,身份验证:SQL Server身份验证,用户名:sa,密码:(编辑))并开始浏览。

如果您无法访问该计算机,Entity Framework可以为您创建数据库。

  1. Install SQL Server Express

  2. 找到包含EntityModel.edmx文件的项目,打开app.config,然后编辑连接字符串。设置数据源,用户标识和密码以匹配您安装的SQL Express实例。

  3. 双击Visual Studio中的EntityModel.edmx文件。您应该看到实体模型图。

  4. 右键单击图表上某处的空白区域。选择&#34;从模型&#34;生成数据库,然后单击出现的对话框中的选项。

  5. Visual Studio完成数据库创建后,您现在可以使用SQL Server Management Studio连接到新安装的数据库实例,并开始在数据库中进行浏览。

  6. 如果您的数据库需要一些种子数据,您可能需要获取一些有关如何在新数据库中正确填写种子数据的项目特定信息。

  7. 因此,这将为您提供一个使用SSMS的数据库。就代码连接而言,如果不首先熟悉Entity Framework,您很快就会失去运气。但总的来说,它是这样的:

    1. 如果.edmx文件位于与可执行文件不同的项目中,则可能需要编辑可执行文件项目中的app.config文件。设置数据源,初始目录,用户ID和密码以匹配您的数据库。

    2. 在EntityModel.edmx文件下,查找以.Context.tt结尾的文件。在该文件下,查找以.Context.cs结尾的文件。打开该文件。

    3. 查找从DbContext派生的类。

    4. 创建该类的实例,并使用Linq查询访问该类提供的数据。

    5. 例如,您的课程可能如下所示:

      public partial class MyDataContext : DbContext
      {
          public MyDataContext()
              : base("name=MyDataContext")
      
          public virtual DbSet<MyEntity> MyEntities { get; set; }
      }
      

      您可以使用以下代码选择所有MyEntities:

      var context = new MyDataContext();
      var data = from e in context.MyEntities
                 select e;
      

答案 2 :(得分:2)

一旦超过元数据属性(这只是元数据和映射的管道分隔资源列表),它就是一个常规连接字符串。在应用程序中可能存在类似于以下的代码:

var db = new EntityModel("PCApp_TaxitechEntities"); 

这是打开与db

的连接