存储在本地数据库或文件中的应用程序菜单的数据源?

Datasource for app menu stored in local database or file?

我对 UWP 应用程序 (MVVM) 的结构有疑问。基本上我有这三个模型。

public class Country
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<City> Cities { get; set; }
    ...
}

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
    ...
}

public class Item
{
    public int Id { get; set; }
    public Country Co { get; set; }
    public City Ci { get; set; }
    ...
}

我在应用程序首次启动时使用 classes Country 和 City 构建分层菜单 (ListView),因此我解析了一个具有预定义值的 XML 文件。我的菜单控件 ItemsSourceObservableCollection

public ObservableCollection<Country> Countries { get; set; }

该应用程序应将 class Item 的实例存储在本地 SQLite 数据库中,这引出了我的问题。将应用程序主菜单的数据源存储在本地数据库中是个好主意吗?我更喜欢数据库而不是文件,因为它更容易添加新条目(国家/地区)。

我使用 NuGet 中的 SQLiteNetExtensions 包,因此我可以映射数据库中的关系。哪些关系 (1:1, 1:m,...) 符合上述模型的数据结构?也许你可以给我一个提示,我不是数据建模方面的专家。

谢谢!

变化从何而来?根据该决定,将数据存储在何处。

我假设用户正在添加 Item 的实例并且您将它们存储到数据库中,您将在本地存储中拥有该数据库。

对于 CountryCity 项:

  • 如果更改也由用户完成,将它们存储在数据库中是个好主意。
  • 如果更改随应用程序一起分发,XML 文件是更好的选择。或者至少是一个不同的数据库,否则您将覆盖用户数据或必须在应用程序启动时将记录添加到现有数据库。

就关系而言:

[OneToMany]
public List<City> Cities { get; set; }

[ManyToOne]
public Country Co { get; set; }
[ManyToOne]
public City Ci { get; set; }