【问题标题】:Using enum correctly or not正确使用枚举
【发布时间】:2012-02-22 00:59:19
【问题描述】:

我正在尝试设置一些数据库表并为教师、学生、课程、学期的主题创建一些模型类。这是针对 MVC3 Web 应用程序的。如果我有一个用户配置文件实体和模型类。如果我在 userprofile 模型类中创建一个分类枚举并且该枚举是教师或学生,它会起作用吗? Idk 如果这可行。我真的不知道我怎么能做到这一点,因为我需要学生注册的课程,对于老师,我需要他/她正在教授和教授的课程。任何建议将不胜感激。

例如,在 userprofile 类中可能是这样的:

    class UserProfile {

         public Guid UserID { get; set; }
         public string fname { get; set; }
         public string lname { get; set; }
         public Classification classification { get; set; }

     }

    public enum Classification {

        Student, Teacher
    }

【问题讨论】:

    标签: c# asp.net-mvc-3 enums


    【解决方案1】:

    您的情况是为派生类型量身定做的。

    UserProfile 应该是抽象的,有两种具体类型,分别称为TeacherStudent
    然后,这些继承的类型可以各自具有不同的属性。

    【讨论】:

      【解决方案2】:

      我觉得你的设计不错。

      您也可以使用布尔变量,例如 UserIsPatientUserIsTeacher,但是通过使用枚举,您创建的东西可以在您以后的需求发生变化时轻松扩展 - 例如,如果您想添加学生教师、实习生等。

      【讨论】:

      • 感谢您的回复,我想我对关系如何运作感到困惑。我如何将我的老师和学生实体与 userprofile 实体联系起来。现在我的组成员有继承用户配置文件的学生和教师实体,但是当我们这样做时我们会遇到各种错误。该关系会指向分类还是仅指向用户 ID?
      • 我不确定我是否理解您的问题。 “Student”和“Teacher”是枚举的成员,并且您的 UserProfile 类有一个字段来指定 UserProfile 对象是指教师还是学生。与引用枚举的任何字段一样,UserProfile.classification 实际上存储一个整数值——在这种情况下,0 代表学生,1 代表教师。 UserProfile.classification 是分类的外键,而 UserProfile.UserID 是用户配置文件表中的主键。
      • 好吧,这很酷,因为我所做的是我进入了 dbml,当进入分类属性的属性时,我将类型更改为 global::SolutionName.Models.Enum.Classification...现在我不必存储整数,dbml 会将其作为分类枚举记录下来并尝试匹配教师或学生
      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2022-06-18
      • 1970-01-01
      相关资源
      最近更新 更多