EF を使用して MVC4 プロジェクトを作成し、正常に作成されたデータベース テーブルのシードを作成しようとしました。次のように初期化クラスを作成しました。
public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
var companies = new List<Company>
{
new Company { CompanyID = 1, CompanyName = "eBay", LogoURL = "~/Images/test1.jpg" },
new Company { CompanyID = 2, CompanyName = "Coca Cola", LogoURL = "~/Images/test2.jpg" },
new Company { CompanyID = 3, CompanyName = "Google", LogoURL = "~/Images/test3.jpg" },
new Company { CompanyID = 4, CompanyName = "Microsoft", LogoURL = "~/Images/test.jpg" }
};
companies.ForEach(c => context.Company.Add(c));
context.SaveChanges();
}
}
Context クラス内には、次のものがあります。
public MyContext(string connString) : base(connString)
{
this.Configuration.LazyLoadingEnabled = false;
Database.SetInitializer<MyContext>(new MyInitializer());
this.Database.CreateIfNotExists();
this.Database.Initialize(true);
}
データベースは正常に作成されていますが、期待どおりにデータが Company テーブルに入力されていません。イベント ログを確認したところ、次のメッセージが表示されました。
情報 :ユーザー DOMAIN\username' のログインに失敗しました。理由: 明示的に指定されたデータベースを開くことができませんでした。[クライアント: xxx.xxx.x.xx]
情報:データベース 'dbname' を起動しています
データベースが「起動」する 2 秒前にログインに失敗したようです。これは、会社のテーブルに人口がいない原因でしょうか?
どんな助けでも大歓迎です。