类结构镜像DB结构?

时间:2010-10-20 23:41:47

标签: c# postgresql

对不起,如果这是noobish,但我是开发新手并且正在自学。

假设我有两张桌子

生物数据
姓名(字符串)
出生日期(日期时间)
BloodType(int)

血型
BloodTypeId(int)
BloodTypeName(字符串)

当我拉一条记录时,我会使用一个连接,这样我就可以拉出BloodTypeName而不只是ID。

现在,我的类结构是否应该镜像这些表,或者我可以安全地使用

构建一个“Person”类
public class Person {
  string Name;
  DateTime Birthdate;
  string BloodType;
}

如果我按照上面的说明构建类,那么在DB中插入记录时我似乎必须做一些好玩,因为我想向用户显示BloodTypeName,但我有将相关整数插入db。

任何有关最佳做法的见解都将受到赞赏。

4 个答案:

答案 0 :(得分:2)

不,如果你有充分的理由不这样做,它肯定不会镜像数据库结构。

有时数据类会完全镜像数据库,但这不是因为它们必须相同,而是因为没有理由让它们与众不同。使类镜像数据库可以实现更简单的数据层,但只要有理由对类进行不同的建模,就应该考虑镜像数据库是否使得使用类更难。

在这种情况下,如果必须在单独的操作中获取血型名称,效率明显降低。除了人类之外,您可能还需要血型类(例如,如果您想要填充所有可能血型的下拉列表),但是当您获取人物对象的数据时,您还应该获取血型名称。 / p>

或者,你可以同时获取血型的id和名称以及人的数据,并创建一个血型对象来存储在person对象中:

public class BloodType {
  int Id;
  string Name;
}

public class Person {
  string Name;
  DateTime Birthdate;
  BloodType BloodType;
}

答案 1 :(得分:0)

我会在显示类和数据类之间分开。

数据类必须具有数据库中存在的任何和所有信息才能更改它。现在,如果要向用户显示特定信息,可以编写显示类,这些类只包含所需的特定信息。然后你只需要映射它们 - 无论是你自己还是使用像automapper这样的库,我自己使用它并且它非常方便,并且需要承担很多工作量。

答案 2 :(得分:0)

我假设您正在为您的数据库使用RDBMS系统,并且您将为您的类结构使用OOP方法。如果你坚持使用这两种方法的核心原则,你就可以了。

没有必要混合使用这些方法。所以=>不要反映那些结构。你可以这样建立一个Person类。

答案 3 :(得分:-1)

Hay andrew .. 是的它应该反映数据库结构,

如果你还在学习这个东西,你可以开始阅读LINQ Tech,它几乎可以完成你所要求的大部分工作,希望有所帮助, 此致..