Управление профилями пользователей с помощью SimpleMembership/Sql Server CE, MongoDB
Я решил использовать 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; }
}
Ответы
Ответ 1
Вам нужна реализация AspNet.Identity для MongoDB для замены использования по умолчанию AspNet.Identity.EntityFramework в стандартном AccountController в ASP.NET MVC 5? Если да - возможно, это поможет вам - полностью реализовано MongoDB.AspNet.Identity.
Ответ 2
вам нужно использовать connectionString из appSetting.
Вам нужно будет загрузить вышеуказанную вилку, создать и изменить существующую ссылку на 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