我们在我们的项目中使用System.Web.Security.DefaultMembershipProvider并且我们碰壁了。
MembershipProvider 合约的这个特定实现使用硬编码模型定义(System.Web.Providers.ModelHelper.membershipSsdl 和 Sytem.Web.Providers.ModelHelper.membershipCsdl)使用 EntityFramework 创建模型和生成的数据库。
此特定模型定义将UserName字段的最大长度设置为50 个字符,将Email字段的最大长度设置为256个字符。现在在很多情况下,我们的用户可能希望/被要求使用他们的电子邮件地址作为他们的用户名。显然,这对他们中的很多人来说是不可能的,因为该模型中的数据验证将失败。
据我所知,无法覆盖此模型定义,并且作为 Microsoft 开源程序的一部分,CodePlex 上没有 ASPNET 通用提供程序库的源代码。然而,Visual Studio 中的 resharper 将执行大量的反编译,让我们能够看到实现的内部工作原理。
在这个关头,我们不得不走“实施您自己的会员提供商”路线,但我/我们想看看那里是否有人对这个问题有任何建议/替代想法/建议。否则看起来我们要复制几千行现有的 MS 代码只是为了改变几个字符。