내 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'.
과 같은 충돌이 발생합니다.
<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" />
가 작동하지 않습니다 :
Database_Entities2
가
[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);
}
}
}
}
. 누구든지 제가하려는 일을 성취하도록 도울 수 있습니까? 고마워요!
편집
두 정보의 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)이 아닙니다.
예. 그것은 효과가있다! 나는 거기에 내 결과를 게시 할 것입니다,하지만 마침내 제대로 작동하는 것 같습니다, 많이 감사합니다! – hsim
@HerveS 엔티티 프레임 워크 (데이터베이스 첫 번째)에 대한 내 애도 중 하나입니다. Microsoft에서 연결 문자열 (기본적으로 엔터티 프레임 워크 연결 문자열이 무엇인지) 내에 연결 문자열을 포함시키는 것이 좋은지 누가 알았는지 정말 알고 싶습니다. –
지금 당장 가지고있는 문제는 다이어그램과 간단한 멤버십 속성에 대해 하나씩 2 개의 연결이 있다는 것입니다. 'Database_Entity1' 모델에서 UserProfile에 어떻게 접근 할 수 있습니까? – hsim