У нас есть база данных, которая была развернута для различных клиентов. В настоящее время мы представляем необязательную новую функцию, которая для использования потребует от клиентов, которые хотят, чтобы эта функция была добавлена новая таблица в существующую базу данных.
Поскольку мы внедряем новое программное обеспечение, которое должно будет взаимодействовать с версиями базы данных как с новой таблицей, так и без нее (и поскольку нам не нужны 2 версии, одна для клиентов, у которых есть новая таблица, а другая для тех, кто не t) нам было интересно, можно ли программно определить (с помощью структуры сущностей), существует ли таблица в базе данных (я могу попытаться получить доступ к таблице и вызвать исключение, но мне было интересно, есть ли встроенная функция для выполнения это)
Спасибо
Изменить: Учитывая, что люди говорят мне, что я должен использовать файл конфигурации, не проверяя с помощью 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 и вместо этого использовал настройку конфигурации