最初に Entityframework コードを使用して、ASP.NET MVC 4 アプリを実装しようとしています。実際には、カスタムとデフォルトの UsersContext の 2 つのデータ コンテキストがあります。
namespace Namespace.Models
{
public class StoreDB : DbContext
{
public DbSet<Supplier> Suppliers { get; set; }
public DbSet<Vendor> Vendors { get; set; }
public DbSet<Product> Products { get; set; }
}
}
と
public class UsersContext : DbContext
{
public UsersContext() : base("StoreDB")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
おそらくその発言public UsersContext() : base("StoreDB")
は間違っている。しかし、デフォルト値: base("DefaultConnection")
のままにすると、DefaultConnection
データベースが作成されました。もちろん、「StoreDB」という名前のデータベースが 1 つだけ必要です。
UserProfile
に属する にいくつかの変更を加えましたUsersContext
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public DateTime? DoB { get; set; }
}
そして、次のように Global.asax を更新しました。
Database.SetInitializer(new Namespace.Models.StoreDbInitializer());
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Namespace.Models.UsersContext>());
しかし、アプリケーションを実行すると、次のエラーが発生します。
CREATE DATABASE permission denied in database 'master'.
「マスター」の下にデータベースを作成しようとするのはなぜですか?
私の接続文字列は次のとおりです。
<add name="StoreDB"
connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=SSPI; MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"/>