我选择使用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; }
}
如果我将UserProfileId
添加到User
?
public class User {
public Int32 UserProfileId { get; set; }
public String Name { get; set; }
public List<Events> AssociatedEvents { get; set; }
}
答案 0 :(得分:8)
你必须使用appSetting中的connectionString。
您需要下载上面的fork,build&amp;更改现有的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 Key名称。
[1]:https://github.com/osuritz
[2]:https://github.com/osuritz/MongoDB.Web/commit/b1e9534023ca8cb2e74eb1adbdcb1cd7dd693efa
答案 1 :(得分:5)
您是否需要在MongoDB中使用AspNet.Identity实现来替换ASP.NET MVC 5中标准AccountController中的默认AspNet.Identity.EntityFramework用法?如果是 - maybe this helps you - 完全实现了MongoDB.AspNet.Identity。