如何初始化(和Seed)两个Entity Framework dbcontext对象?

时间:2015-05-14 22:32:44

标签: c# entity-framework asp.net-web-api

我的代码中有两个dbcontexts:

  1. AppIdentityDbContext
  2. AppDataDbContext
  3. 第一个(AppIdentityDbContext)是您在创建WebApi应用程序时获得的vanilla dbcontext,并指示您需要本地身份验证。它创建表AspNetUsers,AspNetRoles等。默认情况下,这个上下文名为ApplicationDbContext,但我重命名了它。

    第二个dbcontext(AppDataDbContext)是我打算用来处理应用程序数据的上下文(除了AspNet.Identity数据之外的所有内容)。

    这些db上下文中的每一个都指向两个不同的数据库文件(现在是LocalDb)

    我的Global.asax文件如下所示:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    
        // initialize user database
        Database.SetInitializer(new InitializeAppIdentityDbContext());
        AppIdentityDbContext identityContext = new AppIdentityDbContext();
        identityContext.Database.Initialize(true);
    
        // initialize data domain database with sample data
        Database.SetInitializer(new InitializeAppDataDbContext());
        AppDataDbContext dataContext = new AppDataDbContext();
        dataContext.Database.Initialize(true);
    }
    

    InitializeAppIdentityDbContext种子/创建 - 通过使用UserManager,几个ApplicationUser实例。这些用户在AspNetUsers表中填充。

    同样地,我正在尝试种子AppDataDbContext,并在那里有代码来做。

    问题是,当下面的行尝试执行时,我得到一个错误,这是最后一行:

    dataContext.Database.Initialize(true);
    

    错误说:

    Server Error in '/' Application.
    
    One or more validation errors were detected during model generation:
    
    SampleApi.DataAccess.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
    SampleApi.DataAccess.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
    IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
    IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.
    

    这对我来说很困惑,因为第二个db上下文(AppDataDbContext)没有任何模型可以引用任何提到的AspNetIdentity内容(IdentityUserRole,IdentityUserLogins等)。那里的模型有我自己的应用程序类。

    无论如何,我确信我违反了一些关于如何初始化这两个dbcontex的内容,但不知道实现它的正确方法是什么。所以,如果你在这里,感谢你对我的支持并阅读我的信息。我应该尝试什么想法?

    非常感谢,

    -Alex

0 个答案:

没有答案