簡體   English   中英

共享EntityFramework Datamodel

[英]Sharing EntityFramework Datamodel

我在我的WPF桌面應用程序(NS:MyCompany.MyProduct)中使用EntityFramework 4。

現在我想在ASP.NET中創建相同的應用程序(NS:MyCompany.MyProduct2),具有完全相同的功能......因此,我需要使用與WPF應用程序已經完全相同的數據庫。

另外,我想在我的主要WPF項目之上創建一個新的可執行文件(因此是一個新的wpf項目),它也使用與WPF / ASP.NET-Application相同的ConnectionString來顯示一些報告。

所以我想通了,我需要共享的.edmx-模型(NS:MyCompany.MyProduct.Models DBModel.edmx),這是在WPF應用程序的的app.config或web.config中已經執着的ConnectionString ASP.NET-App。

這樣做的最佳或推薦方法是什么?

這樣做的最佳或推薦方法是什么?

創建一個類庫項目並將EF模型放在那里並在WPF / Web項目之間共享它。 父項目未選取庫項目的app.config文件,因此您必須手動更新web.config文件以添加ConnectionString部分。

這種方法允許您在WPF應用程序和Web應用程序之間共享業務邏輯。 如果它們本質上是相同的應用程序但在不同的平台上,那么您應該只重新實現UI - 這是MVC模式的主要優點之一。

在這里同意@James。 不要害怕將庫項目添加到您的解決方案中。 因此,您將擁有一個名為MyCompany.Model的項目,其中包含您的EDMX。 (實際上,您可能會發現以后想要使用T4代從DbContext或ObjectContext中拆分模型,但這是另一個討論 。)

使用Visual Studio,您實際上可以將項目(您的EDMX項目)添加到多個解決方案中。 但是,編輯一個破壞另一個的解決方案時,請注意不要對EDMX項目進行更改。

恭敬地,您可能會發現在這里使用GAC並不理想,特別是如果您的EDMX仍在不斷發展。

對於連接字符串,這些是您希望在項目之間共享的一件事。 通常,它們位於可執行項目的app.config(或web.config)中。 這可能是一個難題,因為如果您使用庫項目來保存EDMX,EF將自動在庫項目中創建一個app.config,其中包含連接字符串。 但.NET 從不使用app.config來實現DLL。 它的唯一原因是為您提供可以復制/粘貼到可執行文件(WPF)app.config或web.config的真實app.config中的內容。

如果您的目標是在一台計算機上共享所有三個應用程序之間的單個.edmx dll,則完成此操作的最佳方法是對dll進行簽名,然后將其添加到GAC。 如果dll將保留在不同的服務器上,則不需要GAC dll,您可以在項目中引用它,並在相應的.configs中添加connectionstring條目。

GAC: http//msdn.microsoft.com/en-us/library/yf1d93sz( v = vs.100).aspx

將DLL安裝到GAC: http//msdn.microsoft.com/en-us/library/dkkx7f79.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM