如何:使用类库中定义的模型(实体数据模型工具)
本主题介绍如何使用 Visual Studio 2008 类库项目中定义的概念模型。
本主题中的第一个过程介绍如何在项目(非 ASP.NET 网站项目)中使用类库中定义的概念模型。 第二个过程介绍如何在 ASP.NET 网站项目中使用类库中定义的概念模型。
在非 ASP.NET 网站项目的项目中使用类库中定义的模型
在 Visual Studio 中,创建一个 Visual C# 或 Visual Basic 类库项目。
有关在 Visual Studio 中创建项目的信息,请参见如何:创建解决方案和项目。
将概念模型添加到类库项目中。
有关新建概念模型并将其添加到项目的信息,请参见如何:创建新的 .edmx 文件(实体数据模型工具)。 有关将现有概念模型添加到项目的信息,请参见如何:添加现有 .edmx 文件(实体数据模型工具)。
将一个新项目(非 ASP.NET 网站项目)添加到现有解决方案。
有关将项目添加到现有解决方案的信息,请参见如何:创建多项目解决方案。
右键单击新添加的项目(非类库项目),然后选择**“添加引用”**。
此时将显示**“添加引用”**对话框。
单击**“添加引用”对话框的“项目”选项卡,然后选择您的类库项目。 单击“确定”**。
再次右键单击新添加的项目(非类库项目),然后选择**“添加引用”**。
单击**“添加引用”对话框中的“.NET”选项卡,然后选择“System.Data.Entity”。 单击“确定”**。
打开类库项目的 App.Config 文件。
突出显示 App.Config 文件的连接字符串部分,右击,然后选择**“复制”**。 例如,复制如下面所示的代码:
<add name="SchoolEntities" connectionString="metadata=res://*/School.csdl| res://*/School.ssdl| res://*/School.msl; provider=System.Data.SqlClient; provider connection string=" Data Source=(local); Initial Catalog=School; Integrated Security=True; MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
打开新添加项目的 App.Config 文件,将复制的连接字符串信息粘贴到
<connectionStrings>
节点中。注意: 如果该项目没有 App.Config 文件,通过在解决方案资源管理器中右键单击该项目,指向“添加”,然后选择“新建项”,即可添加一个 App.Config 文件。在打开的对话框中选择“应用程序配置文件”,然后单击“确定”。
现在,即可在新添加的项目中编写代码,用以使用类库项目中定义的概念模型。
注意: |
---|
生成解决方案前,可能需要将新添加的项目设置为启动项目。为此,请在解决方案资源管理器中右键单击该项目,然后选择“设为启动项目”。 |
在 ASP.NET 网站项目中使用类库中定义的模型
在 Visual Studio 中,创建一个 Visual C# 或 Visual Basic 类库项目。
有关在 Visual Studio 中创建项目的信息,请参见如何:创建解决方案和项目。
将概念模型添加到类库项目中。
有关新建概念模型并将其添加到项目的信息,请参见如何:创建新的 .edmx 文件(实体数据模型工具)。 有关将现有概念模型添加到项目的信息,请参见如何:添加现有 .edmx 文件(实体数据模型工具)。
将 ASP.NET 网站项目添加到现有解决方案。
有关将项目添加到现有解决方案的信息,请参见如何:创建多项目解决方案。
右键单击 ASP.NET 网站项目并选择**“添加引用”**。
此时将显示**“添加引用”**对话框。
单击**“添加引用”对话框中的“.NET”选项卡,然后选择“System.Data.Entity”。 单击“确定”**。
下一步,在 ASP.NET 网站项目中引用该类库项目。 可以采用两种方法执行此操作:
在解决方案资源管理器中右键单击 ASP.NET 网站项目,然后选择**“添加引用”**。
此时将显示**“添加引用”**对话框。
单击**“添加引用”对话框的“项目”选项卡,然后选择您的类库项目。 单击“确定”**。
- 或 -
在解决方案资源管理器中右键单击类库项目,然后选择**“生成”**。
类库程序集即添加到项目的 bin\Debug 文件夹。
右键单击 ASP.NET 网站项目并选择**“添加 ASP.NET 文件夹”。 选择“Bin”**。
Bin 文件夹即添加到项目中。
在 Windows 资源管理器中,导航到类库项目的 bin\Debug 文件夹。 右键单击项目程序集(<项目名称>.dll 文件)并选择**“复制”**。
在解决方案资源管理器中,右键单击 ASP.NET 网站项目下的 Bin 文件夹,然后选择**“粘贴”**。
下一步,使模型和映射文件对 ASP.NET 网站项目可用。 通过嵌入模型和映射文件作为类库程序集中的资源,可以实现这一目的,如下面的步骤所示。 有关替代方法,请参见本主题最后的过程(“将映射和元数据文件复制到 ASP.NET 网站项目”)。
打开类库项目的 App.Config 文件。
突出显示连接字符串信息,右键单击,然后选择**“复制”**。 例如,复制如下面所示的代码:
<add name="SchoolEntities" connectionString="metadata=res://*/School.csdl| res://*/School.ssdl| res://*/School.msl; provider=System.Data.SqlClient; provider connection string=" Data Source=(local); Initial Catalog=School; Integrated Security=True; MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
打开 ASP.NET 网站项目的 Web.config 文件,将复制的连接字符串信息粘贴到
<connectionStrings>
节点中。
现在,即可在 ASP.NET 网站项目中编写代码,用以使用类库项目中定义的概念模型。
注意: |
---|
生成解决方案前,可能需要将新添加的项目设置为启动项目。为此,请在解决方案资源管理器中右键单击该项目,然后选择“设为启动项目”。 |
将映射和元数据文件复制到 ASP.NET 网站项目
下面几个过程介绍两种将模型和映射文件复制到 ASP.NET 网站项目的方法。 这里介绍的两种方法都可以替代上面过程中的第 7 步。 第一个过程介绍如何将文件复制到 ASP.NET 网站项目的 Bin 文件夹,第二个过程介绍如何将文件复制到 App_Data 文件夹。 如果选择这两种方法中的任意一种,请不要嵌入模型和映射文件作为类库程序集中的资源。
将模型和映射文件复制到 ASP.NET 网站项目的 Bin 文件夹
双击类库项目中的 .edmx 文件。 该 .edmx 文件将在 ADO.NET 实体数据模型设计器(实体设计器)中打开。
右键单击设计图面的空白区域,然后选择**“属性”**。
在**“属性”窗口中,将“元数据项目处理”属性设置为“复制到输出目录”**。 如果选择此值,实体设计器将更改类库的 App.Config 文件中的连接字符串,以便使用相对文件路径。
在解决方案资源管理器中右键单击类库项目,然后选择“生成”。
在 Windows 资源管理器中,导航到类库输出目录(bin\Debug 文件夹),然后复制 .csdl、.ssdl 和 .msl 文件。
右键单击 ASP.NET 网站项目下的 Bin 文件夹,然后选择**“粘贴”**。
注意: 如果该项目没有 Bin 文件夹,在解决方案资源管理器中右键单击该项目,指向“添加 ASP.NET 文件夹”,然后选择“Bin”,即可添加一个 Bin 文件夹。 打开类库项目的 App.Config 文件。 突出显示连接字符串信息,右键单击,然后选择**“复制”**。
打开 ASP.NET 网站项目的 Web.config 文件,将复制的连接字符串信息粘贴到
<connectionStrings>
节点中。将连接字符串中的元数据项更改为以 ~\bin\ 为前缀。 例如,复制和修改的连接字符串项应如下所示:
<add name="SchoolEntities" connectionString="metadata=~\bin\School.csdl| ~\bin\School.ssdl| ~\bin\School.msl; provider=System.Data.SqlClient; provider connection string=" Data Source=(local); Initial Catalog=School; Integrated Security=True; MultipleActiveResultSets=True"" 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=" Data Source=(local); Initial Catalog=School; Integrated Security=True; MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />