2012-03-16 67 views
1

您好,我想知道是否有人可以解决我的问题。我试着寻找一个解决方案,但不知道哪里可以开始寻找。用户类设计问题

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

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

我的问题是UserType。有时它是一个字符串,有时它是一个整数,我不知道如何创建一个类来处理这个没有使用类,而是用UserType作为int和另一个作为字符串。

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

而且用户类带回不同的信息,例如我只要包含名字和姓,有时我要包含的用户名和活性和不活跃。

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

什么是最好的方法?

+0

任何您无法使用随asp.net提供的[会员功能](http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx)的原因? – Oded 2012-03-16 09:55:55

+0

会员并不总是最佳的解决方案!当然不。另外,制作自己的*东西*通常可以更好地理解事情的工作方式。 – f2lollpll 2012-03-16 10:01:46

回答

2

你这里有几个问题应该可能被分拆...

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

不要那样做。它稍微陈腐的答案,但你的用户类型是一个字符串或它是一个int。弄清楚它究竟是哪一个,或者你想要它是什么,并且做到这一点。

你可以使用枚举,尽管当然这些都是硬编码的,所以你不能轻易地添加或删除,但他们至少可以让你将字符串连接到int分割。

如果你需要使用两者,可能会更好的是在你的数据库中查找(即一个匹配字符串和整数的表),然后你可以在某个地方查找它(可能只是从数据库一次,然后缓存它们而不是每次查找都要进行数据库调用)。

而且用户类带回不同的信息,比如我 只想包含姓和,有时我想 包含用户名和活跃和不活跃。

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

有多少数据?在大多数情况下,如果您每次都购回所有数据,则不会花费太多的开销,因为您总是会知道用户对象包含所需的所有信息,所以这会更容易。如果您特别担心要获取大量数据,则不需要您可以查看Lazy Loading,这可能会按照您的要求进行。您可能会发现,虽然在向数据库发送数据请求时添加“活动”标志的开销比开发第二次数据库调用的开销小得多,如果您确实需要该信息的话。

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

+0

谢谢你的建议。也许我想办法来处理数据。在我的数据库中,我使用命名值对和用户表本身的数字表示。所以,例如,如果我有一个下拉列表,我有文本值和一个数值。我将Type保存为一个int类型,并有一个方法来获取表示它的值,并将其保存在一个类中,因为在一天结束时,我将管理和更新的唯一值是文本值仅用于整数值显示。再次感谢... – 2012-03-16 10:41:17

+0

是的,听起来像字符串名称应该只用于显示代码,所有内部应该使用int。建议没有问题。这是一个有趣的问题。尽管为了将来的参考,你可以通过我的答案看到,在这里有两个单独的问题,最好单独提出(如果你认为这是相关的话,可能相互参考)。 – Chris 2012-03-16 10:53:29