Если вам нужно проверить существование таблицы, вы должны вызвать пользовательский код SQL:
bool exists = context.Database
.SqlQuery<int?>(@"
SELECT 1 FROM sys.tables AS T
INNER JOIN sys.schemas AS S ON T.schema_id = S.schema_id
WHERE S.Name = 'SchemaName' AND T.Name = 'TableName'")
.SingleOrDefault() != null;
Имя таблицы по умолчанию определяется как имя DbSet
, отображаемое в вашем производном контексте, но имя по умолчанию может быть переопределено с помощью метода ToTable
свободного API или Table
аннотации данных.
Выполнение этого в общем смысле не является чем-то предполагаемым в подходе кода вначале. Для этого потребуется просмотреть метаданные и вручную изучить, к какой таблице сопоставляется сущность - это может быть довольно сложно, поскольку сущность может быть сопоставлена с несколькими таблицами. Сначала код не предлагает доступ к метаданным. Вы должны конвертировать DbContext
в ObjectContext
и просмотреть MetadataWorkspace
.
Edit:
Чтобы преобразовать DbContext
в ObjectContext
, используйте это:
ObjectContext objContext = ((IObjectContextAdapter)dbContext).ObjectContext;