HOW TO:使用類別庫中定義的模型
本主題說明如何在 Visual Studio 2008 類別庫 (Class Library) 專案中已定義 Entity Data Model (EDM) 時在專案內使用 EDM。
本主題的第一個程序說明如何從 ASP.NET 網站專案以外的專案內使用類別庫中定義的 EDM。第二個程序說明如何從 ASP.NET 網站專案內使用類別庫中定義的 EDM。
若要從 ASP.NET 網站專案以外的專案內使用類別庫中定義的 EDM
在 Visual Studio 中建立 Visual C# 或 Visual Basic 類別庫專案。
如需在 Visual Studio 中建立專案的詳細資訊,請參閱 HOW TO:建立方案和專案 (英文)。
將 EDM 加入至類別庫專案。
如需建立新的 EDM 並將它加入至專案的詳細資訊,請參閱 HOW TO:建立新的 Entity Data Model。如需將現有的 EDM 加入至專案的詳細資訊,請參閱 HOW TO:加入現有的 Entity Data Model。
將新專案 (非 ASP.NET 網站專案) 加入至現有方案。
如需將專案加入至現有方案的詳細資訊,請參閱 HOW TO:建立多專案的方案 (英文)。
以滑鼠右鍵按一下新加入的專案 (非類別庫專案),然後選取 [加入參考]。
[加入參考] 對話方塊隨即出現。
按一下 [加入參考] 對話方塊的 [專案] 索引標籤,然後選取類別庫專案。按一下 [確定]。
再次以滑鼠右鍵按一下新加入的專案 (非類別庫專案),然後選取 [加入參考]。
按一下 [加入參考] 對話方塊的 [.NET] 索引標籤,然後選取 [System.Data.Entity]。按一下 [確定]。
開啟類別庫專案的 App.Config 檔案。
反白顯示 App.Config 檔案連接字串 (Connection String),然後以滑鼠右鍵按一下它,再選取 [複製]。例如,複製如下的程式碼:
<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 檔案,您可以在 [方案總管] 中以滑鼠右鍵按一下該專案,然後指向 [加入],再選取 [新增項目],藉此加入這個檔案。從隨即開啟的對話方塊中選擇 [應用程式組態檔],然後按一下 [確定]。
您現在就可以在新加入的專案中撰寫程式碼,它將會使用類別庫專案中定義的 EDM。
注意: |
---|
您可能必須在建置方案之前將新加入的專案設定為啟始專案。若要這麼做,請在 [方案總管] 中以滑鼠右鍵按一下該專案,然後選取 [設定為啟始專案]。 |
若要從 ASP.NET 網站專案內使用類別庫中定義的 EDM
在 Visual Studio 中建立 Visual C# 或 Visual Basic 類別庫專案。
如需在 Visual Studio 中建立專案的詳細資訊,請參閱 HOW TO:建立方案和專案 (英文)。
將 EDM 加入至類別庫專案。
如需建立新的 EDM 並將它加入至專案的詳細資訊,請參閱 HOW TO:建立新的 Entity Data Model。如需將現有的 EDM 加入至專案的詳細資訊,請參閱 HOW TO:加入現有的 Entity Data Model。
將 ASP.NET 網站專案加入至現有方案。
如需將專案加入至現有方案的詳細資訊,請參閱 HOW TO:建立多專案的方案 (英文)。
以滑鼠右鍵按一下 ASP.NET 網站專案,然後選取 [加入參考]。
[加入參考] 對話方塊隨即出現。
按一下 [加入參考] 對話方塊的 [.NET] 索引標籤,然後選取 [System.Data.Entity]。按一下 [確定]。
下一個步驟是從 ASP.NET 網站專案參考類別庫專案。有兩種方式可讓您完成這個步驟:
在 [方案總管] 中以滑鼠右鍵按一下 ASP.NET 網站專案,然後選取 [加入參考]。
[加入參考] 對話方塊隨即出現。
按一下 [加入參考] 對話方塊的 [專案] 索引標籤,然後選取類別庫專案。按一下 [確定]。
-或-
在 [方案總管] 中以滑鼠右鍵按一下類別庫專案,然後選取 [建置]。
類別庫組件 (Assembly) 隨即加入至專案的 bin\Debug 資料夾。
以滑鼠右鍵按一下 ASP.NET 網站專案,然後選取 [加入 ASP.NET 資料夾]。選取 [Bin]。
[Bin] 資料夾隨即加入至專案。
在 [Windows 檔案總管] 中巡覽至類別庫專案的 bin\Debug 資料夾。以滑鼠右鍵按一下專案組件 (<project_name>.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 網站專案中撰寫程式碼,它將會使用類別庫專案中定義的 EDM。
注意: |
---|
您可能必須在建置方案之前將新加入的專案設定為啟始專案。若要這麼做,請在 [方案總管] 中以滑鼠右鍵按一下該專案,然後選取 [設定為啟始專案]。 |
將對應檔和中繼資料檔複製至 ASP.NET 網站專案
下列程序說明兩個適用於將模組和對應檔複製至 ASP.NET 網站專案的選項。此處說明的兩個方法都可以取代前述程序中的步驟 7。第一個程序說明如何將檔案複製至 ASP.NET 網站專案的 [Bin] 資料夾,第二個程序說明如何將檔案複製至 [App_Data] 資料夾。如果您選擇使用這兩個選項時,請不要嵌入模組和對應檔做為類別庫組件中的資源。
若要將對應檔和中繼資料檔複製至 ASP.NET 網站專案的 Bin 資料夾
按兩下類別庫專案中的 .edmx 檔案。.edmx file 檔案隨即在 ADO.NET 實體資料模型設計工具 (Entity Designer) 中開啟。
以滑鼠右鍵按一下設計介面的空白區域,然後選取 [屬性]。
在 [屬性] 視窗中將 [Metadata Artifact Processing] 屬性設為 [複製到輸出目錄]。選取這個值時,Entity Designer 會將類別庫的 App.Config 檔案中的連接字串變更為有相對檔案路徑。
在 [方案總管] 中以滑鼠右鍵按一下類別庫專案,然後選取 [建置]。
在 [Windows 檔案總管] 中巡覽至類別庫輸出目錄 (bin\Debug 資料夾),然後複製 .csdl、.ssdl 和 .msl 檔案。
在 ASP.NET 網站專案下方以滑鼠右鍵按一下 [Bin] 資料夾,然後選取 [貼上]。
注意: 如果該專案沒有包含 [Bin] 資料夾,您可以在 [方案總管] 中以滑鼠右鍵按一下該專案,然後指向 [加入 ASP.NET 資料夾],再選取 [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.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" />
另請參閱
其他資源
使用 Entity Designer 部署工作
Entity Data Model 工具工作
ADO.NET 實體資料模型設計工具案例
Connection Strings