对不起,如果这是noobish,但我是开发新手并且正在自学。
假设我有两张桌子
生物数据
姓名(字符串)
出生日期(日期时间)
BloodType(int)
血型
BloodTypeId(int)
BloodTypeName(字符串)
当我拉一条记录时,我会使用一个连接,这样我就可以拉出BloodTypeName而不只是ID。
现在,我的类结构是否应该镜像这些表,或者我可以安全地使用
构建一个“Person”类public class Person {
string Name;
DateTime Birthdate;
string BloodType;
}
如果我按照上面的说明做构建类,那么在DB中插入记录时我似乎必须做一些好玩,因为我想向用户显示BloodTypeName,但我有将相关整数插入db。
任何有关最佳做法的见解都将受到赞赏。
答案 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,它几乎可以完成你所要求的大部分工作,希望有所帮助, 此致..