Я пытаюсь установить правильную строку подключения для моей базы данных, чтобы мой метод WebSecurity.InitializeDatabaseConnection
мог указать на мою базу данных.Установить правильную строку подключения для SimpleMembership
Вот моя строка соединения:
<add name="Database_Entities1" connectionString="metadata=res://*/Models.DAL.Entities.MTG_Model.csdl|res://*/Models.DAL.Entities.MTG_Model.ssdl|res://*/Models.DAL.Entities.MTG_Model.msl;provider=System.Data.SqlClient;provider connection string="data source=**.**.***.***;initial catalog=Model_Name;persist security info=True;user id=*****;password=*********;multipleactiveresultsets=True;application name=EntityFramework;Pooling=True;Max Pool Size=1000"" providerName="System.Data.EntityClient" />
Проблема здесь имя провайдера, который System.Data.EntityClient
. Мне действительно нужно, чтобы он указывал на System.Data.SqlClient
, но когда я пытаюсь скопировать/вставить строку подключения и заменить System.Data.EntityClient
на другое имя провайдера, я получаю такой сбой, как Keyword not supported: 'metadata'.
.
Так я понимаю, что вызов мой метод, как это:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
public override void OnActionExecuting(ActionExecutingContext _filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
Database.SetInitializer<Database_Entities1>(null);
try
{
using (var context = new Database_Entities1())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
WebSecurity.InitializeDatabaseConnection("Database_Entities2", "UserProfile", "UserId", "UserName", true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
}
}
}
}
Где Database_Entities2
является:
<add name="Database_Entities2" connectionString="metadata=res://*/Models.DAL.Entities.MTG_Model.csdl|res://*/Models.DAL.Entities.MTG_Model.ssdl|res://*/Models.DAL.Entities.MTG_Model.msl;provider=System.Data.SqlClient;provider connection string="data source=**.**.***.***;initial catalog=Model_Name;persist security info=True;user id=*****;password=*********;multipleactiveresultsets=True;application name=EntityFramework;Pooling=True;Max Pool Size=1000"" providerName="System.Data.SqlClient" />
не работает, потому что строка соединения SqlClient не работает таким образом. Может ли кто-нибудь помочь мне достичь того, что я пытаюсь сделать? Большое спасибо!
EDIT
Два additionnal часть информации: У меня есть эта строка соединения:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MyApp-20130829080410;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MyApp-20130829080410.mdf" providerName="System.Data.SqlClient" />
Который работал; однако, как вы можете видеть, он не указывает на мою базу данных, поэтому, если я попытаюсь найти всех пользователей в таблице «UserProfile», это невозможно, поскольку таблица была создана в локальной базе данных (что я не знаю почему у меня есть), а не в главном (Database_Entities1), следовательно, этот вопрос.
YEAH! Это сработало! Я опубликую свой результат там, но, наконец, он работает правильно, спасибо большое! – hsim
@HerveS Это одно из моих раздражителей с инфраструктурой сущностей (сначала база данных). Мне бы очень хотелось узнать, кто в Microsoft подумал, что было бы неплохо встроить строку соединения внутри строки подключения (что по сути является строкой соединения с инфраструктурой сущности). –
Проблема, с которой я сейчас сталкиваюсь, состоит в том, что у меня есть 2 соединения, один для моей диаграммы и один для простых атрибутов членства. Как я могу получить доступ к пользовательскому профилю в модели «Database_Entity1»? – hsim