代码之家  ›  专栏  ›  技术社区  ›  Buh Buh

需要关于我的数据库结构的建议,以创建有用的实体

  •  -1
  • Buh Buh  · 技术社区  · 15 年前

    我想使用Entity Framework V.1创建类似于以下C类的内容:

    abstract class User 
    { 
       public int UserId;
       public string TelephoneNumber;
    }
    
    class Teacher : User 
    { 
       public string FavorateNewspaper; 
    }
    
    class Pupil : User 
    { 
       public string FavorateCartoon; 
    }
    

    我计划使用SQL Server和普通的成员资格提供程序。它将为我创建一个名为aspnet_Users的表。有两个角色:教师和学生。

    我将向表aspnet_Users添加对两个角色都通用的字段。然后创建任务型教师和任务型学生来保存特定角色的信息。

    所以我的数据库看起来有点像这样:

    aspnet_Users
        int UserId
        varchar TelephoneNumber
    
    tbl_Teachers
        int UserId
        varchar FavorateNewspaper
    
    tbl_Pupils
        int UserId
        varchar FavorateCartoon
    

    当然,我的想法是,通过加入UserId,我可以将aspnet_用户中的数据与tbl_教师或tbl_学生中的数据进行匹配。

    我的数据库结构是实现这些类的最佳选择吗?

    我是否应该更改我的数据库结构,以便EF创建更接近我想要的类的实体?

    编辑: 我重新安排了我的问题,使我的问题更清楚一点。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Kevin O'Donovan    15 年前

    如果你使用的是EF 1,那么POCO可能会有点不愉快。除非有充分的理由不这么做,否则我只能使用普通的EF实体。顺便说一下,您的数据库模型很好,是TPT(每类型表)继承映射的一个示例。您可以使用向导从数据库创建实体,或者创建实体并将它们映射到关联的表。如果你做前者,你最初会得到三个不相关的实体。然后使用设计器告诉EF学生和教师是从用户继承的,并且该用户是抽象的。

    一般来说,EF的一个优点是实体不必与持久化它们的表紧密匹配。在这种情况下,虽然有一个自然的映射。