Проверить, существует ли таблица в базе данных с помощью LINQ

У нас есть база данных, которая была развернута для различных клиентов. В настоящее время мы представляем необязательную новую функцию, которая для использования потребует от клиентов, которые хотят, чтобы эта функция была добавлена ​​новая таблица в существующую базу данных.

Поскольку мы внедряем новое программное обеспечение, которое должно будет взаимодействовать с версиями базы данных как с новой таблицей, так и без нее (и поскольку нам не нужны 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 и вместо этого использовал настройку конфигурации

5
задан tereško 2 February 2014 в 10:44
поделиться