azure - 将 ASP.NET 4.0 成员资格提供程序与 Azure 移动服务结合使用

标签 azure asp.net-membership azure-sql-database azure-mobile-services

我遇到了一个大问题。

我正在构建一个使用 ASP.NET 4 Web 应用程序 > Azure SQL > Azure 移动服务 > Windows Phone 8 应用程序的系统。数据被输入到已经托管在 azure 上的网站中,该网站使用了成员(member)提供程序及其默认表。此数据已成功存储在 Azure SQL 数据库上。

我的主要障碍是Azure移动服务要求其中的每个表都有一个名为“id”的主键 - 小写!在我看来很疯狂。当然,成员(member)资格提供商对 PK 有不同的名称。

问题 - 我应该重新设计我的整个 ASP.NET 应用程序(花费大量时间和精力)以使用自定义成员资格(PK 列名为“id”),还是尝试找到一种方法来尝试将列名称动态更改为“id”(不知道如何!)。有人有什么建议吗?非常感谢提前。

最佳答案

我认为使用 Azure 移动服务不应迫使您重新设计所有现有架构。话虽如此,您可以尝试两种可能的解决方案。

第一个是实际上不使用 Azure 移动服务的 EntityData 类 - 不强制从 EntityData 继承或使用 AMS。如果您想使用 TableController,您需要继承 EntityData,这可能是一个好主意,因为它为您提供了很多内置功能,但您可以选择使用普通的 ApiController 和当前模型。

另一种可能的解决方案是使用所谓的 DTO(数据传输对象),它可以帮助您保留当前的架构,但仍然能够使用 AMS。

以下是有关 DTO 的更多信息的一些链接: What is Data Transfer Object? Create Data Transfer Objects (DTOs)

可能的实现:

假设您有以下模型:

public class MyUser
{
    public int MyId
    {
        get;
        set;
    }

    public string SomeOther
    {
        get;
        set;
    }
}

正如您所指出的,如果您想将此模型与 AMS 一起使用,您需要使用它们的 Id 属性而不是 MyId。如果你想保持 MyUser 完整,你可以引入以下类:

public class MyUserDTO : EntityData
{
    public string SomeOther
    {
        get;
        set;
    }
}

现在您的服务将使用 MyUserDTO,它就像您原始模型的代理。您必须解决的问题是您应该在 MyUserDTO 和 MyUser 之间进行转换。如果您的模型很简单并且没有复杂的层次结构,那就很容易了。如果您有复杂的模型,DTO 可能不是正确的方法。 Automapper是一个可以帮助您从模型映射到 DTO 的工具,反之亦然。

不过,我没有太多关于您的架构的信息,并且使用 DTO 可能不太合适。

关于azure - 将 ASP.NET 4.0 成员资格提供程序与 Azure 移动服务结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575011/

相关文章:

c# - 如何获取访问 token 以与外部 api 进行集成测试

c# - 重置密码恢复状态

asp.net-mvc - 您可以将 RolePrincipal 包装在自定义 IPrincipal 对象中吗?

database - 从 Blob 存储在 Azure SQL 数据库中创建表

azure - 从 SSMS 部署到 Azure 时,属性 FillFactor 设置且用作数据包的一部分时不受支持

azure - 从 Azure 数据库服务器恢复 SQL 数据库

azure - 如何使用 azure CLI 检查 azure 资源是否已在使用?

azure - 使用 ARM 模板为应用程序服务启用诊断日志

c# - Azure 媒体播放器无法在 iPhone 上使用 AES 保护

sql - Asp.net MVC + 成员资格 + 代码优先 + 现有数据库