windows 应用程序与哪个数据库一起运行并在应用程序启动时运行?
what database does windows applications work with that runs with the start of the app?
所以这就是交易,这是我第一次为客户开发 windows 应用程序,客户显然不能 运行 xampp 每次都获得 MySQL 数据库 运行 使用应用程序(因为应用程序需要从数据库中获取数据),所以我的问题是如何制作一个正常的 windows 应用程序,其数据库在启动应用程序本身后启动?大多数人是怎么做到的?他们使用什么数据库?最好是免费的解决方案
有很多不同的选择。一位评论者提到了 SQLite 和 SQL Server Compact 版本,但是如果你在本地 运行 连接数据库,你应该考虑你是否需要那么复杂的东西,或者它是否只是矫枉过正。
您可以考虑 LINQ or LINQ to XML。 LINQ 是一个内置于 C# .NET 中的查询 API,在较新版本的 .NET(例如 Core 3.1)中具有令人难以置信的性能,并且与整个 C# 生态系统非常干净地集成。
使用裸 LINQ,您可以在启动时从任何类型的文件格式加载数据(XML 或 JSON 很流行,我最近开始使用 FlatBuffers,这是由 Google) 其中有一个包含所有数据库条目的 List<YourObjectModel>
。 YourObjectModel
这里将是一个 class 代表一个数据库行。从那里,您可以通过两种方式之一构建查询。有 SQL 风格
List<YourObjectModel> dataBase = LoadData();
var result = from entry in database
where entry.FieldA == "something"
select entry;
或者,我喜欢的流畅风格
var result = database.Where(entry => entry.FieldA == "something");
在实践中,您可以用 LINQ 做任何您可以用 SQL 做的事情,包括排序、旋转、分组等。LINQ 有很多好处,但我最喜欢的卖点是“惰性求值” ",如果 LINQ 可以避免的话,它不会一次执行整个查询。如果不排序,将 IEnumerable<T>
转换为不同的容器,或者读取结果的 Count
属性,LINQ 将 运行 查询足够长的时间来获取一个结果,然后准备好。如果将结果传递到 foreach
循环或其他一些场景中,这可能会大大提高性能。
一些轶事证据,我正在开发一个简单的 2D 游戏引擎,我需要按实体的 Z 坐标对实体进行排序,以便我可以从后向前绘制它们。我很懒,使用 LINQ 查询对包含 10,000 多个对象的 List<GameEntity>
进行排序,因为这是一个单行解决方案。它 运行 很棒。我回去实施了适当的排序,发现它实际上比 LINQ 慢。我花了一个下午试图实现比 LINQ 更快的排序算法,但没成功。
所以这就是交易,这是我第一次为客户开发 windows 应用程序,客户显然不能 运行 xampp 每次都获得 MySQL 数据库 运行 使用应用程序(因为应用程序需要从数据库中获取数据),所以我的问题是如何制作一个正常的 windows 应用程序,其数据库在启动应用程序本身后启动?大多数人是怎么做到的?他们使用什么数据库?最好是免费的解决方案
有很多不同的选择。一位评论者提到了 SQLite 和 SQL Server Compact 版本,但是如果你在本地 运行 连接数据库,你应该考虑你是否需要那么复杂的东西,或者它是否只是矫枉过正。
您可以考虑 LINQ or LINQ to XML。 LINQ 是一个内置于 C# .NET 中的查询 API,在较新版本的 .NET(例如 Core 3.1)中具有令人难以置信的性能,并且与整个 C# 生态系统非常干净地集成。
使用裸 LINQ,您可以在启动时从任何类型的文件格式加载数据(XML 或 JSON 很流行,我最近开始使用 FlatBuffers,这是由 Google) 其中有一个包含所有数据库条目的 List<YourObjectModel>
。 YourObjectModel
这里将是一个 class 代表一个数据库行。从那里,您可以通过两种方式之一构建查询。有 SQL 风格
List<YourObjectModel> dataBase = LoadData();
var result = from entry in database
where entry.FieldA == "something"
select entry;
或者,我喜欢的流畅风格
var result = database.Where(entry => entry.FieldA == "something");
在实践中,您可以用 LINQ 做任何您可以用 SQL 做的事情,包括排序、旋转、分组等。LINQ 有很多好处,但我最喜欢的卖点是“惰性求值” ",如果 LINQ 可以避免的话,它不会一次执行整个查询。如果不排序,将 IEnumerable<T>
转换为不同的容器,或者读取结果的 Count
属性,LINQ 将 运行 查询足够长的时间来获取一个结果,然后准备好。如果将结果传递到 foreach
循环或其他一些场景中,这可能会大大提高性能。
一些轶事证据,我正在开发一个简单的 2D 游戏引擎,我需要按实体的 Z 坐标对实体进行排序,以便我可以从后向前绘制它们。我很懒,使用 LINQ 查询对包含 10,000 多个对象的 List<GameEntity>
进行排序,因为这是一个单行解决方案。它 运行 很棒。我回去实施了适当的排序,发现它实际上比 LINQ 慢。我花了一个下午试图实现比 LINQ 更快的排序算法,但没成功。