Пропустить определенную таблицу в DbContext.Database.CreateIfNotExists () - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь создать базу данных, используя

_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 (), это существующий проект, и все, что мне нужно, это добавить подход, основанный на коде.

...