2016-01-19 22 views
0
  1. 我必須建立一個Windows桌面應用程序,存儲數據,並能夠操縱數據,但問題是,我不能決定使用哪個數據庫?數據庫驅動的Windows桌面應用程序與嵌入式數據庫在Visual Studio 2015

  2. 我需要的應用程序是獨立的,這樣至少不需要在客戶端PC上安裝其他軟件(Windows Vista到10)。

  3. 我需要應用程序才能導出數據,並可能將數據庫連接到雲。

  4. 我使用C#作爲語言和WPF作爲用戶界面平臺。

我讀this問題它幾乎涵蓋了我的要求。

但作爲Sql精簡版在2013視覺工作室版本後折舊我不確定要使用什麼。

我也看了this答案,它涵蓋了同樣的事情,這一點,但我不知道這是什麼意思,這是否意味着,如果我使用的Microsoft SQL Server數據庫並嵌入MS SQL Server Express的(最新,僅限數據庫)與我的應用程序我不需要明確設置服務器。

如果我確實按照這種做法做了這個選擇之前我可能需要考慮的其他事情是什麼。

要說清楚我使用的Visual Studio 2015年社區,我一直在使用基於服務數據庫,創建一個.MDF文件,我喜歡這樣的做法和我的主要焦點問這個問題如果我繼續使用相同的方法(基於服務的數據庫),並將MS SQL Server Express(僅限數據庫)嵌入到我的應用程序中,那麼對於第1,2,3,4點以上的版本,我可以嗎?

請提供有關此事的任何見解。

如果不知道有人已經完成了它並且它有效,我就無法作出決定。

+0

您當前使用的是LocalDB實例,它仍*需要[安裝](http://www.toadworld.com/platforms/sql-server/) b /博客/存檔/ 2014/01/02 /什麼,是的LocalDB)。你考慮過SQLite嗎? – Martheen

+0

@martheen我正在考慮使用Visual Studio附帶的工具,所以我不考慮SQLite,如果遵循上面描述的方法,我會好嗎? –

+0

您目前的方法仍然需要安裝SQL Server Express(儘管只有最低的LocalDB版本,不需要服務器設置)。目前沒有Microsoft的解決方案支持真正的嵌入式數據庫SQL CE可以通過在VS 2015上添加支持,雖然 – Martheen

回答

4

一些提示,以確保你是面向未來的:

  1. 不要直接從您的代碼與數據庫交互。設置契約(接口)並在一個單獨的DLL中執行所有的實現。如果您需要從本地數據庫遷移到雲數據庫,則可以簡單地重新實現雲數據庫的相同界面,並且代碼將像以前一樣運行使用(1)中的方法,您可以基本上也可以很自由地使用完全不同類型的數據存儲,即存在許多NoSQL數據庫之一。

我通常要求XXXRepository或XXXStore,例如我的數據庫合同:

public interface IProductStore 
{ 
    IEnumerable<Product> All { get; } 

    IEnumerable<Product> OutOfStock { get; } 

    Product GetById(Guid Id); 
} 

我可以實現在一個單獨的DLL,只有與交易爲已經在這裏提到的例子SQLite的這個ProductStore合同,或其他任何東西。然後,您既可以使用一個工廠或IOC容器做接口和實現之間的映射:

var productsStore = DependencyResolver.Resolve<IProductStore>(); 

foreach(var product in productsStore.OutOfStock) 
{ 
    System.Console.WriteLine($"Need to refill: {product.Name}"); 
} 

這讓你非常自由嘗試一噸不同的數據庫,能適合你的需要,你只需要更改配置以使用不同類型的數據庫

+0

@ pedro-g-dias這是一個很好的答案,它花了我一些時間來理解你的邏輯,但我是一個只需要輕鬆完成工作的新手,但我將遵循你的方法在我看來,這是正確的選擇,我在Django中使用了這個邏輯,所以我認爲它是最好的 –

相關問題