跳过DbContext.Database.CreateIfNotExists()上的某些表

时间:2018-12-07 12:52:29

标签: c# entity-framework entity-framework-6

我正在尝试使用

创建数据库
_ctx.Database.CreateIfNotExists();

其中_ctx是我的数据库上下文。项目中有一些映射到上下文的系统表,例如:

public class SchemaColumnMap : EntityTypeConfiguration<SchemaColumn>
{
    public SchemaColumnMap()
    {
        this.HasKey(k => new { k.TABLE_NAME, k.COLUMN_NAME });
        this.ToTable("COLUMNS", "INFORMATION_SCHEMA");

    }
}

尝试创建架构时,出现以下错误:

  

指定的架构名称“ INFORMATION_SCHEMA”不存在,或者您无权使用它。

查看sql profiler,我看到它试图创建INFORMATION_SCHEMA.COLUMNS表:

CREATE TABLE [INFORMATION_SCHEMA].[COLUMNS] (
[TABLE_NAME] [nvarchar](128) NOT NULL,
[COLUMN_NAME] [nvarchar](128) NOT NULL,
[ORDINAL_POSITION] [int] NOT NULL,
[COLUMN_DEFAULT] [nvarchar](max),
[IS_NULLABLE] [nvarchar](max),
[DATA_TYPE] [nvarchar](max),
[CHARACTER_MAXIMUM_LENGTH] [int],
[NUMERIC_PRECISION] [tinyint],
[NUMERIC_SCALE] [int],
CONSTRAINT [PK_INFORMATION_SCHEMA.COLUMNS] PRIMARY KEY ([TABLE_NAME], [COLUMN_NAME])

,它按预期失败。我的问题是:我可以以某种方式跳过此表的创建而其他模式的创建吗?我无法从模型中删除SchemaColumn,也无法对其进行Ignore(),这是现有项目,我所需要的只是添加代码优先方法。

0 个答案:

没有答案