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

时间:2015-09-23 18:38:20

标签: c# xml sqlite relationships uwp

我对我的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; }
    ...
}

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

变化源自何处?根据决定,存储数据的位置。

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

对于CountryCity项:

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

就关系而言:

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

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