0

我在要在代码中使用的数据库表中有元数据。元数据是用于报告花费时间的不同类型的时间类型。

数据可以是:NormalTime OverTime Vacation Illness 等

数据有一个 ID 和一个描述和一些其他的东西。

ID = 1
Name = "Regular time"
Description = "Normal work time"

在我的代码中关联这些数据的好方法是什么?

例如,如果我想创建一个汇总所有 NormalTime 报告的方法(我有另一个表存储使用的时间,其中 NormalTime ID 和数量以及其他一些东西)我该怎么做?

我不想对 ID 进行硬编码:

Select * from xyz where TimeType = 1

我想做的是:

Select * from xyz where TimeType = NormalTime.

否则代码变得非常难以阅读。

在我当前的解决方案中,我有与 ID 相关的硬编码字符串常量。这样做的问题是,如果有人将 TimeType 的描述从 NormalTime 更改为硬编码字符串 const sai 是一回事,而 db 数据是另一回事。是的,发生这种情况是因为我无法控制数据库内容:(

那么,我如何以最好的可维护和可读的方式解决这个问题,其中数据库表中可能发生更改并且代码不会很难阅读。有人可以将 TimeTypes 添加到数据库中,然后我可以添加在代码中使用它们的方法。

4

2 回答 2

2

一种方法是使用 Visual Studio 的 T4 文本生成模板。(实体框架使用这些来生成代码)

您可以创建一个模板文件,其中包含从数据库中提取带有元数据的表的代码,并在其中生成带有静态常量的类。

但是,只要数据库更改,它们就需要运行。但是我认为您可以设置它们,以便每次构建代码时它们都会重新生成。

关于 T4 模板的问题

于 2012-05-29T14:48:31.587 回答
1

您可以在 C# 端有一个枚举类型,该类型映射到数据库中的表。

http://www.codeproject.com/Articles/41746/Mapping-NET-Enumerations-to-the-Database

于 2012-05-29T15:16:56.490 回答