10

我选择mongodb用作以域为中心的数据的存储。我正在寻找official mongodb providers将它们集成到ASP.NET MVC项目中以保留单个应用程序数据库。没有官方供应商,可用的供应商看起来并不成熟/稳定。所以我决定按原样使用简单的会员资格。

Entity Framework如果可能,如何从AccountController?

您将如何管理同时具有SimpleMembership UserProfile和的用户配置文件MongoDB User

例子

在单独的程序[project-name].domain集中有两个类:

public class Event {
    public DateTime ScheduledDate { get; set; }
    public String Name { get; set; }
    public Location Location { get; set; }
}

public class User {
    public String Name { get; set; }
    public List<Events> AssociatedEvents { get; set; }
}

如果我添加一个UserProfileIdto这会是一个解决方案User吗?

public class User {
    public Int32 UserProfileId { get; set; }
    public String Name { get; set; }
    public List<Events> AssociatedEvents { get; set; }
}
4

2 回答 2

8

您必须使用 appSetting 中的 connectionString。

您将需要下载上面的 fork,构建和更改您现有的 dll 引用以使用新的 dll。

然后...

使用您的配置:

<appSettings>
   <add key="MONGOLAB_URL" value="mongodb://localhost/ASPNETDB"/>    
</appSettings>

...上面的值将被 appharbor/mongolab 替换(如果你有应用程序的其他部分可以工作,那么这是正确的)

<providers>
   <clear />
   <add name="MongoDBMembershipProvider" type="MongoDB.Web.Providers.MongoDBMembershipProvider" 
    applicationName="/"  appSettingsConnectionStringKey="MONGOLAB_URL" collection="Users"
        enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
        maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" />
</providers>

所以在上面的配置中,它有 appSettingsConnectionStringKey 参数。自定义提供程序中的代码读取 appSettingsConnectionStringKey 值 'MONGOLAB_URL',然后使用它来读取 ConfigurationManager.AppSettings["MONGOLAB_URL"] ,显然,必须与上面的 appsetting 键名匹配。

[1]:https ://github.com/osuritz

[2]:https ://github.com/osuritz/MongoDB.Web/commit/b1e9534023ca8cb2e74eb1adbdcb1cd7dd693efa

于 2013-11-19T10:36:28.807 回答
5

您是否需要 MongoDB 的 AspNet.Identity 实现来替换 ASP.NET MVC 5 中标准 AccountController 中的默认 AspNet.Identity.EntityFramework 用法?如果是 -也许这对你有帮助- 完全实现了 MongoDB.AspNet.Identity。

于 2013-11-16T18:23:21.843 回答