nav*_*war 1 c# sql-server wpf embedded-database visual-studio-2015
我必须构建一个存储数据并能够操作数据的 Windows 桌面应用程序,但问题是,我无法决定使用哪个数据库?
我需要该应用程序是独立的,以便客户端 PC 上至少不需要安装其他软件(windows vista 到 10)。
我需要该应用程序能够导出数据并将数据库连接到云。
我使用 C# 作为语言,WPF 作为用户界面平台。
我读了这个问题,它几乎涵盖了我的要求。
但是由于Sql Compact Edition在 2013 Visual Studio 版本之后折旧,我不确定该使用什么。
我也阅读了这个答案,它涵盖了相同的内容,但我不确定这意味着什么,如果我使用Microsoft SQL Server作为数据库并将MS SQL Server Express(最新的,仅限数据库)嵌入我的应用程序,这是否意味着我不需要明确设置服务器。
如果我确实遵循这种做法,那么在做出这个选择之前我可能需要考虑的其他事情是什么。
并且要清楚我正在使用Visual Studio 2015 社区,并且我一直在使用基于服务的数据库来创建一个.mdf文件,我喜欢这种方法,我问这个问题的主要焦点是,如果我继续使用相同的方法(基于服务的数据库)并在我的应用程序中嵌入 **MS SQL Server Express(仅限 ** 数据库),我可以接受上面的 1、2、3、4 点吗?
请提供对此问题的任何见解。
我无法在不知道有人已经完成并且有效的情况下做出决定。
确保您面向未来的一些提示:
不要直接从您的代码与数据库交互。设置合同(接口)并在单独的 DLL 中执行所有实现。如果您需要从本地数据库移动到云数据库,您可以简单地为云数据库重新实现相同的接口,您的代码将像以前一样运行
使用 (1) 中的方法,您基本上也可以完全自由地使用完全不同类型的数据存储,即众多 NoSQL 数据库之一。
我通常将我的数据库合同称为 XXXRepository 或 XXXStore,例如:
public interface IProductStore
{
IEnumerable<Product> All { get; }
IEnumerable<Product> OutOfStock { get; }
Product GetById(Guid Id);
}
Run Code Online (Sandbox Code Playgroud)
我可以在一个单独的 DLL 中实现这个 ProductStore 合同,该 DLL 只处理例如这里已经提到的 SQLite 或其他任何东西。然后,您可以使用工厂或 IoC 容器来进行接口和实现之间的映射:
var productsStore = DependencyResolver.Resolve<IProductStore>();
foreach(var product in productsStore.OutOfStock)
{
System.Console.WriteLine($"Need to refill: {product.Name}");
}
Run Code Online (Sandbox Code Playgroud)
这使您可以非常自由地尝试大量可以满足您需要的不同数据库,您只需要更改配置即可使用不同类型的数据库
归档时间: |
|
查看次数: |
3542 次 |
最近记录: |