我正在尝试使用
创建数据库_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(),这是现有项目,我所需要的只是添加代码优先方法。