2013-10-21 50 views
10

我选择使用mongodb作为域为中心的数据存储。 我正在寻找official mongodb providers将其整合到ASP.NET MVC项目中以保持单个应用程序数据库。没有官方供应商,可用供应商看起来不成熟/稳定。所以我决定使用简单的会员资格。用SimpleMembership/Sql Server CE管理用户配置文件,MongoDB

如何摆脱Entity Framework特定的代码,如果可能,从AccountController

您将如何管理兼具SimpleMembership UserProfileMongoDBUser的用户配置文件?

在一个单独的组件[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; } 
} 

这会是一个解决方案,如果我添加UserProfileIdUser

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

回答

5

你需要AspNet.Identity实施的MongoDB在ASP.NET MVC 5替换非标准的AccountController默认AspNet.Identity.EntityFramework使用?如果是 - maybe this helps you - 完全实现了MongoDB.AspNet.Identity。

+0

你知道这是否会与MVC4工作?试图以任何一种方式尝试,但想知道这是否是特定于MVC5的,并且如果是这样的话可以节省一些痛苦... –

+1

微软Owin分布在NuGet上,所以看起来,您可能会将其添加到您的MVC4项目并使用Owin标识而不是旧的Forms/Membership提供者模型。 –

+1

去了MVC5路线。开始一个新项目......不妨从最新/最好的开始。谢谢! –

8

您必须使用appSetting中的connectionString。

您需要下载上面的分支,构建&更改您现有的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”],显然,它必须与上面的应用程序密钥名称匹配。

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

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

相关问题