【问题标题】:MVC4 SimpleMembership Connection StringsMVC4 SimpleMembership 连接字符串
【发布时间】:2013-05-12 02:21:38
【问题描述】:

我有一个 DB First EF5 项目,我正在其中实施 SimpleMembership。我已经完成了大部分工作,但出现了一个问题。

由 Simple Membership 创建的主 User 表中包含 UserName。我在应用程序中还有其他几个地方需要查询此表,特别是用户名。简单成员不使用连接字符串中的 Data.EntityClient,所以我将它设置为 SqlClient。

所以因为我没有提供者用户表的实体模型,所以我不知道如何查询它。通常我会创建一个实体模型的实例并在其上使用 LINQ,但是当我尝试它时,我得到一个关于首先将代码与实体混合的非常冗长的错误。我已经修改了“initialSimpleMembershipAttribute”,因此它指向我为成员表创建的单独连接字符串。

我想到的一个解决方案是保存用户,然后将用户名复制到我的一个自定义表中,然后我可以通过 EF 查询它,但这似乎违反了某种重复数据的数据库“最佳实践” .

我的另一个想法是为 Membership 创建的表创建第二个 edmx 模型,但如果 SimpleMembership 不使用 EntityClient,这是否也意味着它不会识别实体模型?

【问题讨论】:

    标签: asp.net-mvc-4 simplemembership


    【解决方案1】:

    你已经把事情复杂化了。

    如果您有自己的模型,那么您可以摆脱默认模板为您提供的模型,而改用您的模型。无论是代码优先还是数据库优先或其他什么都没有关系。只需更改 Initialize SimpleMembershipAttribute 以删除对它们为您提供的默认模型的引用,并确保您正确修改 InitializeDatabaseConnection 调用。

    WebSecurity.InitializeDatabaseConnection("YourConnection", "WhateverYouCallYourUserTable", 
        "WhateverYourUserIdIs", "WhateverYourUserNameColumnIs", autoCreateTables: true);
    

    【讨论】:

    • 好的,我可以做到。但是我仍然需要单独的连接字符串,对吧?
    • @teahou - 我不明白您所说的“单独的连接字符串”是什么意思。如果你有自己的数据库和模型,那么你只有一个连接字符串。
    • 一个用于 simplemembership 表,它使用 System.Data.SqlClient 提供程序,一个用于实体模型,它包含我的所有其他表并使用 System.Data.EntityClient。这是根据这篇文章:stackoverflow.com/questions/12575311/…。正如你所说,我最初的想法是,它不应该那么难。请让我知道如何简化这种所谓的简单会员制。
    • @teahou - Ahh.. 是的,你只有两个指向同一个数据库的连接字符串。
    • 这让我们回到最初的问题,我是否也应该有 2 个 edmx 模型?如果没有,如何使用 system.data.sqlclient 连接查询表?
    猜你喜欢
    • 2013-01-05
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多