У нас есть база данных, которая была развернута для различных клиентов.В настоящее время мы вводим дополнительную новую функцию, для использования которой потребуются клиенты, которые хотят, чтобы эта функция добавила новую таблицу в существующую базу данных.
Поскольку мы внедряем новый программный продукт, который должен будет взаимодействовать с версиями базы данных как с новой таблицей, так и без нее (и, поскольку нам не нужны две версии, одна для клиентов, у которых есть новаятаблица и одна для тех, кто этого не делает) нам было интересно, возможно ли программно определить (с помощью сущности), существует ли таблица в базе данных (я могу попытаться получить доступ к таблице и вызвать ее исключение, но мне было интересно, еслибыла встроенная функция для этого)
Спасибо
Редактировать: Учитывая, что люди говорят мне, что я должен использовать файл конфигурации, не проверяя EF, может кто-нибудьдайте мне указания о том, как проверить файл конфигурации, например, с помощью пользовательских аннотаций данных для контроллера MVC.Что-то вроде:
[Boolean(Properties.Settings.Default.TableExists)]
public class NamedController : Controller
Что выбрасывает страницу, не найденную, если ложно?
Редактировать 2: С предложениями, данными людьми для использования настроек конфигурации, я закончилсо следующим решением
Настройки приложения, чтобы установить, существует ли таблица
<appSettings>
<add key="tableExists" value="True"/>
</appSettings>
пользовательская аннотация данных, чтобы сказать, разрешить ли доступ к контроллеру
[AuthoriseIfTableExistsIsTrue]
public class NamedController : Controller
коддля пользовательской авторизации
public class AuthoriseIfTableExistsIsTrue : AuthorizeAttribute
{
private readonly bool _tableExists;
public AuthoriseIfTableExistsIsTrue()
{
_tableExists = string.Equals(bool.TrueString, ConfigurationManager.AppSettings["tableExists"], StringComparison.InvariantCultureIgnoreCase);
}
public AuthoriseIfTableExistsIsTrue(bool authorise)
{
_tableExists = authorise;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (_tableExists)
return base.AuthorizeCore(httpContext);
else
throw new HttpException(404, "HTTP/1.1 404 Not Found");
}
}
Спасибо всем за помощь и за то, что я не использовал EF для этого, а вместо этого использовал настройку конфигурации