实体框架核心 - 同一数据库中的2个上下文 - 不创建第二个上下文表

时间:2017-08-21 10:14:59

标签: entity-framework entity-framework-core

我试图在同一个数据库上使用2个上下文 要创建数据库我使用DbContext.Database.EnsureCreated()
第一个EnsureCreated调用正常,第二个EnsureCreated调用不起作用。

一些注意事项

分析SQL Server我可以看到EF Core检查是否存在表

IF EXISTS (
        SELECT 
            * 
        FROM 
            INFORMATION_SCHEMA.TABLES 
        WHERE 
            TABLE_TYPE = 'BASE TABLE') 

    SELECT 1 
ELSE 
    SELECT 0

然后它运行create table语句 如果数据库上有用户表,则没有任何操作......

有没有办法从实体脚手架强制表创建?

2 个答案:

答案 0 :(得分:1)

其实我只是这样找到了。

RelationalDatabaseCreator databaseCreator = 
    (RelationalDatabaseCreator) context.Database.GetService<IDatabaseCreator>();
databaseCreator.CreateTables();

答案 1 :(得分:1)

在我的情况下,这是因为我无法运行add-migration SecondContext_Initial -Context SecondContext因此无法运行迁移。 EnsureCreated()(返回false)和Migrate()(什么也没做)都没有给我的疏忽提供任何线索。