如何:使用类库中定义的模型(实体数据模型工具)

本主题介绍如何使用 Visual Studio 2008 类库项目中定义的概念模型。

本主题中的第一个过程介绍如何在项目(非 ASP.NET 网站项目)中使用类库中定义的概念模型。 第二个过程介绍如何在 ASP.NET 网站项目中使用类库中定义的概念模型。

在非 ASP.NET 网站项目的项目中使用类库中定义的模型

  1. 在 Visual Studio 中,创建一个 Visual C# 或 Visual Basic 类库项目。

    有关在 Visual Studio 中创建项目的信息,请参见如何:创建解决方案和项目

  2. 将概念模型添加到类库项目中。

    有关新建概念模型并将其添加到项目的信息,请参见如何:创建新的 .edmx 文件(实体数据模型工具)。 有关将现有概念模型添加到项目的信息,请参见如何:添加现有 .edmx 文件(实体数据模型工具)

  3. 将一个新项目(非 ASP.NET 网站项目)添加到现有解决方案。

    有关将项目添加到现有解决方案的信息,请参见如何:创建多项目解决方案

  4. 右键单击新添加的项目(非类库项目),然后选择**“添加引用”**。

    此时将显示**“添加引用”**对话框。

  5. 单击**“添加引用”对话框的“项目”选项卡,然后选择您的类库项目。 单击“确定”**。

  6. 再次右键单击新添加的项目(非类库项目),然后选择**“添加引用”**。

  7. 单击**“添加引用”对话框中的“.NET”选项卡,然后选择“System.Data.Entity”。 单击“确定”**。

  8. 打开类库项目的 App.Config 文件。

  9. 突出显示 App.Config 文件的连接字符串部分,右击,然后选择**“复制”**。 例如,复制如下面所示的代码:

    <add name="SchoolEntities" 
               connectionString="metadata=res://*/School.csdl|
                                          res://*/School.ssdl|
                                          res://*/School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
    
  10. 打开新添加项目的 App.Config 文件,将复制的连接字符串信息粘贴到 <connectionStrings> 节点中。

    Cc716677.note(zh-cn,VS.100).gif注意:
    如果该项目没有 App.Config 文件,通过在解决方案资源管理器中右键单击该项目,指向“添加”,然后选择“新建项”,即可添加一个 App.Config 文件。在打开的对话框中选择“应用程序配置文件”,然后单击“确定”

现在,即可在新添加的项目中编写代码,用以使用类库项目中定义的概念模型。

Cc716677.note(zh-cn,VS.100).gif注意:
生成解决方案前,可能需要将新添加的项目设置为启动项目。为此,请在解决方案资源管理器中右键单击该项目,然后选择“设为启动项目”

在 ASP.NET 网站项目中使用类库中定义的模型

  1. 在 Visual Studio 中,创建一个 Visual C# 或 Visual Basic 类库项目。

    有关在 Visual Studio 中创建项目的信息,请参见如何:创建解决方案和项目

  2. 将概念模型添加到类库项目中。

    有关新建概念模型并将其添加到项目的信息,请参见如何:创建新的 .edmx 文件(实体数据模型工具)。 有关将现有概念模型添加到项目的信息,请参见如何:添加现有 .edmx 文件(实体数据模型工具)

  3. 将 ASP.NET 网站项目添加到现有解决方案。

    有关将项目添加到现有解决方案的信息,请参见如何:创建多项目解决方案

  4. 右键单击 ASP.NET 网站项目并选择**“添加引用”**。

    此时将显示**“添加引用”**对话框。

  5. 单击**“添加引用”对话框中的“.NET”选项卡,然后选择“System.Data.Entity”。 单击“确定”**。

  6. 下一步,在 ASP.NET 网站项目中引用该类库项目。 可以采用两种方法执行此操作:

    1. 在解决方案资源管理器中右键单击 ASP.NET 网站项目,然后选择**“添加引用”**。

      此时将显示**“添加引用”**对话框。

    2. 单击**“添加引用”对话框的“项目”选项卡,然后选择您的类库项目。 单击“确定”**。

    - 或 -

    1. 在解决方案资源管理器中右键单击类库项目,然后选择**“生成”**。

      类库程序集即添加到项目的 bin\Debug 文件夹。

    2. 右键单击 ASP.NET 网站项目并选择**“添加 ASP.NET 文件夹”。 选择“Bin”**。

      Bin 文件夹即添加到项目中。

    3. 在 Windows 资源管理器中,导航到类库项目的 bin\Debug 文件夹。 右键单击项目程序集(<项目名称>.dll 文件)并选择**“复制”**。

    4. 在解决方案资源管理器中,右键单击 ASP.NET 网站项目下的 Bin 文件夹,然后选择**“粘贴”**。

  7. 下一步,使模型和映射文件对 ASP.NET 网站项目可用。 通过嵌入模型和映射文件作为类库程序集中的资源,可以实现这一目的,如下面的步骤所示。 有关替代方法,请参见本主题最后的过程(“将映射和元数据文件复制到 ASP.NET 网站项目”)。

    1. 打开类库项目的 App.Config 文件。

    2. 突出显示连接字符串信息,右键单击,然后选择**“复制”**。 例如,复制如下面所示的代码:

      <add name="SchoolEntities" 
                 connectionString="metadata=res://*/School.csdl|
                                            res://*/School.ssdl|
                                            res://*/School.msl;
                                   provider=System.Data.SqlClient;
                                   provider connection string=&quot;
                                   Data Source=(local);
                                   Initial Catalog=School;
                                   Integrated Security=True;
                                   MultipleActiveResultSets=True&quot;" 
                 providerName="System.Data.EntityClient" />
      
    3. 打开 ASP.NET 网站项目的 Web.config 文件,将复制的连接字符串信息粘贴到 <connectionStrings> 节点中。

现在,即可在 ASP.NET 网站项目中编写代码,用以使用类库项目中定义的概念模型。

Cc716677.note(zh-cn,VS.100).gif注意:
生成解决方案前,可能需要将新添加的项目设置为启动项目。为此,请在解决方案资源管理器中右键单击该项目,然后选择“设为启动项目”

将映射和元数据文件复制到 ASP.NET 网站项目

下面几个过程介绍两种将模型和映射文件复制到 ASP.NET 网站项目的方法。 这里介绍的两种方法都可以替代上面过程中的第 7 步。 第一个过程介绍如何将文件复制到 ASP.NET 网站项目的 Bin 文件夹,第二个过程介绍如何将文件复制到 App_Data 文件夹。 如果选择这两种方法中的任意一种,请不要嵌入模型和映射文件作为类库程序集中的资源。

将模型和映射文件复制到 ASP.NET 网站项目的 Bin 文件夹

  1. 双击类库项目中的 .edmx 文件。 该 .edmx 文件将在 ADO.NET 实体数据模型设计器(实体设计器)中打开。

  2. 右键单击设计图面的空白区域,然后选择**“属性”**。

  3. 在**“属性”窗口中,将“元数据项目处理”属性设置为“复制到输出目录”**。 如果选择此值,实体设计器将更改类库的 App.Config 文件中的连接字符串,以便使用相对文件路径。

  4. 在解决方案资源管理器中右键单击类库项目,然后选择“生成”。

  5. 在 Windows 资源管理器中,导航到类库输出目录(bin\Debug 文件夹),然后复制 .csdl、.ssdl 和 .msl 文件。

  6. 右键单击 ASP.NET 网站项目下的 Bin 文件夹,然后选择**“粘贴”**。

    Cc716677.note(zh-cn,VS.100).gif注意:
    如果该项目没有 Bin 文件夹,在解决方案资源管理器中右键单击该项目,指向“添加 ASP.NET 文件夹”,然后选择“Bin”,即可添加一个 Bin 文件夹。

  7. 打开类库项目的 App.Config 文件。 突出显示连接字符串信息,右键单击,然后选择**“复制”**。

  8. 打开 ASP.NET 网站项目的 Web.config 文件,将复制的连接字符串信息粘贴到 <connectionStrings> 节点中。

  9. 将连接字符串中的元数据项更改为以 ~\bin\ 为前缀。 例如,复制和修改的连接字符串项应如下所示:

    <add name="SchoolEntities" 
             connectionString="metadata=~\bin\School.csdl|
                                        ~\bin\School.ssdl|
                                        ~\bin\School.msl;
                               provider=System.Data.SqlClient;
                               provider connection string=&quot;
                               Data Source=(local);
                               Initial Catalog=School;
                               Integrated Security=True;
                               MultipleActiveResultSets=True&quot;" 
             providerName="System.Data.EntityClient" />
    

将模型和映射文件复制到 ASP.NET 网站的 App_Data 文件夹

  • 将模型和映射文件复制到 App_Data 文件夹的步骤与复制到 Bin 文件夹的步骤类似。 但二者之间存在两个重要的差异:

    • .csdl、.ssdl 和 .msl 文件应复制到 ASP.NET 网站项目的 App_Data 文件夹,而不是 Bin 文件夹(上面的第 6 步)。

      注意   如果该项目没有 App_Data 文件夹,在解决方案资源管理器中右键单击该项目,指向**“添加 ASP.NET 文件夹”**,然后选择“App_Data”,即可添加一个 App_Data 文件夹。

    • 将连接字符串信息从类库的 App.Config 文件夹复制到 ASP.NET 网站的 Web.config 文件(上面的第 7 和第 8 步)后,将元数据项更改为以 |DataDirectory| 为前缀。 例如,复制和修改的连接字符串项应如下所示:

      <add name="SchoolEntities" 
               connectionString="metadata=|DataDirectory|\School.csdl|
                                          |DataDirectory|\School.ssdl|
                                          |DataDirectory|\School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
      

另请参见

其他资源

使用实体数据模型工具部署任务
实体数据模型工具任务
实体数据模型工具方案
Connection Strings