2012-11-26 164 views
2

所以我突然發現這個錯誤,我不知道如何解決它。 MyDomain\MyUser列在服務器用戶下,但由於我使用CodeFIrst,數據庫尚未創建,因此我無法將MyDatabase添加到用戶。CodeFirst:無法打開登錄請求的數據庫「MyDatabase」。登錄失敗。用戶'MyDomain MyUser'登錄失敗

這裏是我的代碼:

的ConnectionString:

<add name="MyDatabaseConnection" connectionString="Data Source=myServer; Database=MyDatabase.sdf;Trusted_Connection=True;Persist Security Info=True;Pooling=false" providerName="System.Data.SqlClient" /> 

代碼:

public class MyDbContext: DbContext 
{ 
    public MyDbContext() 
     : base("MyDatabaseConnection") 
    { 
    } 

    public DbSet<User> Users { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Configurations.Add(new UserConfiguration()); 
    } 
} 


public class UserConfiguration : EntityTypeConfiguration<User> 
{ 
    public UserConfiguration() 
    { 
     ToTable("User"); 
     Property(u => u.ID).HasColumnName("UserID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
    } 
} 


protected void Application_Start() 
{ 
    Database.SetInitializer<MyDbContext>(new MyDbContextInitializer()); 
    using (MyDbContext db = new MyDbContext()) 
    { 
     db.Database.Initialize(false); 
    } 
    ... 
} 

public class MyDbContextInitializer : DropCreateDatabaseIfModelChanges<MyDbContext> 
{ 
    protected override void Seed(MyDbContextcontext) 
    { 
     base.Seed(context); 
     SeedMembership(); 
    } 

    private void SeedMembership() 
    { 
     WebSecurity.InitializeDatabaseConnection(ConfigurationManager.ConnectionStrings["MyDatabaseConnection"].ConnectionString, "System.Data.SqlClient", "User", "UserID", "UserName", true); 
     WebSecurity.CreateUserAndAccount("doe1", "password11", new { FirstName = "John", LastName = "Doe" }); 
    } 
} 

回答

2

我有類似的問題,請嘗試將連接字符串更改爲:

<add name="MyDatabaseConnection" connectionString="Data Source=myServer; Database=MyDatabase.sdf;Trusted_Connection=True;" providerName="System.Data.SqlClient" /> 

所以剛剛刪除Persist SecurityPooling。看看是否可行

+0

我有MultipleActiveResultSets = True。刪除這個問題解決了類似的問題。 –

2
  • 打開IIS管理控制檯
  • 打開應用程序池節點
  • 選擇應用程序池對應到您的網站
  • 右鍵單擊應用程序池,然後選擇「高級設置」
  • 選擇標識過程模型部分
  • 選擇本地系統

enter image description here

+1

如果我使用IIS Express,該怎麼辦? – RJP

相關問題