2012-11-26 122 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

相关问题