2

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 秒前にログインに失敗したようです。これは、会社のテーブルに人口がいない原因でしょうか?

どんな助けでも大歓迎です。

4

0 に答える 0