c# - 我的 User 模型是否应该继承 MembershipUser

标签 c# .net asp.net-mvc asp.net-membership

我正在考虑在 ASP.Net MVC3 中创建一个自定义成员资格提供程序,并且正在努力了解它们如何组合在一起......

我确实在寻找一些关于如何做到这一点的最佳实践方法。

我有一个用户模型(代表我的数据库中的用户表)。为了将其与 MembershipProvider 功能一起使用,该模型是否应该继承 MembershipUser? MembershipUser 中有许多我不关心的字段 - 这些字段是否必须位于底层 SQL 表中才能使这种方法发挥作用(显然这似乎是多余的,因为我永远不会使用这些列?)

例如 - 我应该让我的模型像这样继承 MembershipUser 吗?

/// <summary>
/// Class representing a registered user based on the Users database table.
/// </summary>
public class User : MembershipUser
{
    public int Id { get; set; }
    //here I can access some other properties I will use which are already in MembershipUser...

    //Addtional properties I need specific to my app.
    public bool NotifyOfNewBlog { get; set; }
    public bool NotifyOfNewWallPosts { get; set; }
    //...plus many more.
}

当涉及到进一步使用 Membership.GetUser() 时,我是否每次都会将该对象强制转换回我原来的 User 对象以便能够访问附加属性?

这是我应该采取的方法吗?或者我是否需要一个单独的 User 模型,然后是一个链接回数据库模型的 CustomMembershipUser 模型?

如果 EF 没有将所有 MembershipUser 列作为表中的对象,它是否能够保存/更新/插入用户模型?这是否接近正确的方法?正如你所看到的,我在这里有点摸不着头脑。

非常感谢任何建议/想法/想法。

最佳答案

就继承 MembershipUser 对象而言,您可以这样做,并且在 MembershipProvider 的实现中,只需转换为您的派生类型,但我个人不会这样做,仅仅是因为您然后受制于这种类型的 future 更改会破坏您的派生类型(尽管我猜大多数框架都可以这样说)。相反,我会将这些附加值放入配置文件中,并推出您自己的 ProfileProvider(不要使用 Sql ,根据我的经验,它是垃圾)。

“MembershipUser 中有许多我不关心的字段 - 这些字段是否必须位于底层 SQL 表中才能使这种方法发挥作用(显然这似乎是多余的,因为我永远不会使用这些列?) ”

如果您自己滚动,则不能将其保存在数据库中。毕竟,您正在实现 MembershipProvider 方法(GetUser 等),因此如何处理传递给您的 MembershipUser 对象取决于您。您可以忽略这些,而不验证或存储它们。

关于c# - 我的 User 模型是否应该继承 MembershipUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430554/

相关文章:

c# - 为什么 Entity Framework 会丢失我的索引?

c# - 是否可以在 WPF 的 Control 本身中添加航空效果?

c# - Entity Framework Code First 0 到 1 映射

.net - ASP.NET MVC 2 架构和 LINQ 数据模型

asp.net-mvc - 使用模型绑定(bind)从 MVC 4 中的 List<T> 中选择项目

c# - 单击按钮时将文本框值传递给 Controller ​​?

c# - 如何在带有 ReactiveUI 和 Xamarin Forms 的 ListView ItemTemplate 中使用 ViewModelViewHost?

c# - 从另一个 Action 返回一个 Action 不起作用?

c# - Serilog + Azure - Log Analytics 工作区中没有出现自定义日志

c# - 枚举值的算术运算