【问题标题】:Make a Linq-to-SQL Generated User Class Inherit from MembershipUser从 MembershipUser 继承 Linq-to-SQL 生成的用户类
【发布时间】:2009-07-23 17:12:23
【问题描述】:

我目前正在为我的 Asp.net MVC 网站构建一个自定义成员资格提供程序。我有一个带有 Users 表的现有数据库,我正在使用 Linq-to-Sql 自动为我生成这个类。

我想做的是让这个生成的 User 类继承自 MembershipUser 类,这样我就可以更轻松地在我的自定义 Membership Provider 中以 GetUser 等方法使用它。我已经在表中拥有了所有必要的列。

有没有办法做到这一点?还是我的做法完全错误?

谢谢!

【问题讨论】:

    标签: asp.net-mvc linq-to-sql asp.net-membership membership-provider membershipuser


    【解决方案1】:

    通常代码生成工具会创建所谓的部分类,例如:

    public partial class User
    {
        // class definition here
    } 
    

    这意味着您可以像这样在同一命名空间内的某处扩展该类的定义:

    public partial class User: MembershipUser
    {
        // if MembershipUser doesn't have parameterless constructor then you need
        // to add here one
    }
    

    然后您将拥有从 MembershipUser 继承的 User 类。

    【讨论】:

    • 我认为这可行,但现在我实际上在质疑我是否需要实现 Membership Provider。
    • 这取决于您是否需要使用该特定的用户表。在我看来,如果您已经有成千上万的用户并且您无法迁移他们,那么您没有太多选择。但如果它是一个新项目,那么我更喜欢现有的供应商......
    • 嗨 - 我想在我的项目中做同样的事情,但我想知道你如何映射一些继承的只读属性,例如 IsLockedOut?
    • @Stephen:MembershipUser 类的几乎所有属性都是虚拟的,因此您可以用您的实现覆盖它们。
    • @Regent 如果我遗漏了一些明显的东西,请原谅我,但如果我覆盖只读属性,我将无法添加 Set 访问器。对我来说,使用 Linq 映射属性需要获取和设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多