【问题标题】:User Class Design Issue用户类设计问题
【发布时间】:2012-03-16 09:54:13
【问题描述】:

嗨,我想知道是否有人可以解决我的问题。我尝试寻找解决方案,但不知道从哪里开始寻找。

我正在尝试创建自己的用户系统,其中用户详细信息保存在数据库中。

我有一个用户类,它包含用户信息,例如,id、名字、姓氏和用户类型。用户类型为普通用户、版主、管理员。

我的问题是用户类型。有时它是一个字符串,有时它是一个 int,我不知道如何创建一个类来处理这个而不复制该类,但是一个 UserType 作为 int,另一个作为 string。

例如 1 = 管理员 2 = 主持人

用户类也带回不同的信息,例如我只想包含名字和姓氏,有时我想包含用户名和活动而不活动。

再次,我不想为每个类创建一个单独的类,但我不想带回我不需要的数据。

最好的方法是什么?

【问题讨论】:

  • 有什么原因不能使用 asp.net 自带的membership features
  • 会员制并不总是最佳解决方案!当然不。此外,制作自己的东西通常可以更好地理解事物的运作方式。

标签: c# asp.net oop class


【解决方案1】:

你有几个问题可能应该分开......

我的问题是用户类型。有时它是一个字符串,有时它 一个整数

那就别那么做了。这是一个有点陈词滥调的答案,但您的用户类型要么是字符串,要么是 int。弄清楚它到底是哪一个,或者你希望它成为哪一个,然后实现它。

您可以使用枚举,当然这些是硬编码的,因此您无法轻松添加或删除它们,但它们至少具有允许您将字符串桥接到 int 除数的好处。

如果您需要同时使用这两种方法,最好在数据库中进行查找(即,将字符串与整数匹配的表),然后您可以在某处查找它的方法(可能只从数据库一次,然后缓存它们,而不是为每次查找进行数据库调用)。

用户类也带回了不同的信息,例如我 只想包含名字和姓氏,有时我想 包含用户名和活动和不活动。

再次,我不想为每个人创建一个单独的类,但我不想 想要带回我不需要的数据。

有多少数据?在大多数情况下,如果您每次都买回所有数据,您不会考虑太多开销,而且会更容易,因为您总是知道用户对象包含它需要的所有信息。如果您特别担心获得大量不需要的数据,您可以查看Lazy Loading,它可能会满足您的需求。您可能会发现,如果您确实决定需要该信息,那么在对 DB 的数据请求中添加“活动”标志比进行第二次 DB 调用的开销要少得多。

本质上,除非用户拥有大量与之相关的数据,否则这很可能成为性能瓶颈。用户名、名字和姓氏以及通常以字节为单位的东西不太可能给您带来问题,因此在您证明它们是性能瓶颈之前我不会担心。此时您可以担心延迟加载或类似问题来解决您的问题。

【讨论】:

  • 感谢您的建议。也许我对处理数据有很多想法。在我的数据库中,我确实使用了命名值对和用户表本身中的数字表示。例如,如果我有一个下拉列表,我有文本值和数值。我会将 Type 保留为 int 并有一种方法来获取表示它的值而不是将其保存在一个类中,因为在一天结束时,我将管理和更新的唯一值是文本值仅用于的整数值节目。再次感谢...
  • 是的,听起来字符串名称应该只在显示代码中使用,所有内部都应该使用 int。而且建议没有问题。这是一个有趣的问题。尽管您可以从我的回答中看到,以供将来参考,但这里有两个单独的问题最好单独提出(如果您认为相关,可能相互参考)。
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多