【问题标题】:Which is the best? Roles based App or Table per Type?哪个是最好的?每个类型基于角色的应用程序或表?
【发布时间】:2014-05-30 16:10:58
【问题描述】:

我最近正在开发一个需要 2 种用户类型的应用程序。医生和普通用户。它们共享一些属性(例如用户名、密码、名字、姓氏、性别等)。

但是医生还需要一些普通用户没有的其他属性。例如,Physicians 可能具有 Specialty 和 WorkingPlace。我发现我应该在实体框架中使用 Table Per Type Inheritance (TPT)。我创建了一个名为 People 的抽象基类,还创建了两个名为(RegisteredUser 和 Phisycian)的子类,继承自 People 抽象类。

我还发现 ASP.NET 中默认的 Membership Provider 不适合我的需要。所以我开发了一个 CustomMembershipProvider 类,它现在可以在实体框架中使用 Table per Type 继承。

但我认为使用 Roles 而不是 Table Per Type 继承会更好。所以我想更改我的应用程序以使用角色。但问题是我怎样才能为医生和普通用户处理不同的属性?我需要一个可以处理多个用户角色的多个配置文件字段的解决方案。例如,如果用户是医师角色,他应该具有 Specialty 和 WorkingPlace 属性。

谁能帮帮我?

【问题讨论】:

    标签: asp.net sql-server database entity-framework


    【解决方案1】:

    using Simple Membership with Roles 怎么样?

    您可以像这样为特定用户类型(医师、GeneralUsers)使用自定义属性。

    public class PhysicianProfile : ProfileBase
    {
        public string WorkingPlace { 
            get { return this["WorkingPlace"]; }
            set { this["WorkingPlace"] = value; }
        }
    }
    

    【讨论】:

    • 感谢您的回复。但是现在我如何区分两种用户类型。例如,我如何才能找到哪个个人资料属于医生,哪个个人资料属于普通用户?
    • 希望我能正确理解您的问题。你不能使用if ( someProfileObject.GetType() == typeof(PhysicianProfile)) ) 之类的东西,其中someProfileObject 是你的userProfile 实例吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 2010-09-08
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2018-07-06
    相关资源
    最近更新 更多