2

我们目前有一个应用程序,它的数据库有点大,只有静态数据(只读)。

我们正在考虑以模型对象构造填充集合的编译程序集的形式部署数据。一个简单的例子:

public Model()
{
    this.Property1 = new List<AClass>();
    this.Property1.Add(new AClass(1,2));
    this.Property1.Add(new AClass(4,3));
    this.Property1.Add(new AClass(2,6));
}

人们主要担心的是他们从未见过有人这样做。您以前见过/使用过这种方法吗?

主要好处是您不再需要数据访问层并且您拥有更快的性能。

编辑:只读数据库当前由工具生成,因此代码也将由工具生成。

4

2 回答 2

1

实际上它们是两种不同类型的列表:

  1. 数据列表/主数据

    这是存储在数据库中的列表。通常列表很大,对代码逻辑的影响很小。例如是 Country / Nation、字体列表等。这应该放在数据库中。如果对代码逻辑有影响(例如,如果国家是美国,则显示 Zip 框),配置应该放在数据库中(例如IsShowZip)。如果存储在应用程序/程序集中,这没有任何好处。

  2. 应用程序列表

    这是一个对代码逻辑影响很大的列表。通常它会显着影响业务流程(工作流程),或者具有特定的数据库模式。例如,支付类型信用卡/Paypal 等互联网商务。它将影响工作流程(如果来自贝宝可能需要等待验证)和输入(信用卡号/贝宝号)。如果存储在数据库中,这只有一个好处,因为它可以作为输入的约束(因此它不会是除Paypal/ Credit Cardin之外的其他值Payment Type)。但是,这取决于您的数据库访问方式,它可以在应用程序和数据库之间创建隐藏的依赖关系。

更新:

我错过了这个readonly database部分。为了清楚起见,参考上面的第 1 点有优缺点readonly database

优点:

  1. 可以利用索引和查询优化。这适用于过滤数据
  2. 如果数据库是集中式的或使用服务器-客户端架构(可能不适用于本期),您可以修改数据库而无需更改每个客户端
  3. 不提供更新数据的代码修订历史。

缺点:

  1. 查询数据库时的开销(性能影响)。
  2. 额外的可避免依赖——(YAGNI——你不需要它)
于 2013-07-08T06:34:21.523 回答
1

我已经多次嵌入数据,否则这些数据会在应用程序内部的数据库中。没有 XML 文件,没有纯文本文件,没有数据库。

我通常只对我认为永远不会改变的少量数据这样做。

原因总是懒惰。我不想制作数据库、架构、编写数据访问代码等。在这些情况下,即使制作 XML 文件对于少量数据来说也需要太多的工作。

如果所有数据都是只读的,我认为部署程序集而不是实际数据库是一个有趣的想法。正如你所说,它消除了一个非常可能有问题的依赖。

我能想到的唯一缺点是,当您进行查询时,程序集可能必须将大量数据加载到内存中。只要你有某种延迟加载功能,我认为它会很好用。

于 2013-07-06T01:00:27.613 回答