Возврат метода интерфейс

Установка MigrationsAssembly просто сообщает контексту, где найти сборку миграций, вам все равно нужно подробно запускать ее (много раз вы не хотите запускать миграции каждый раз, когда запускаете приложение). Вам нужно позвонить

myDbContext.Database.Migrate();

Для выполнения миграции.

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#apply-migrations-at-runtime

12
задан Gerrie Schenck 4 February 2009 в 13:10
поделиться

6 ответов

Это разрешает Вас Вам DataReader без потребности знания, какой тип DataReader Вы используете (т.е. SqlDataReader, OleDbDataReader, EtcDataReader), поэтому если когда-нибудь Вы хотите изменить datareader, Вы используете его, не повлияет на Вас логика, другими словами, он дает Вам абстракцию. Например:

можно использовать

IDbCommand command = GiveMeSomeCommand();
IDataReader r = command.ExecuteReader();

не зная, какого поставщика Вы используете

это может быть:

private static IDbCommand GiveMeSomeCommand()
{
    return new OleDbCommand();
}

или это может быть

private static IDbCommand GiveMeSomeCommand()
{
    return new SqlCommand();
}

или что бы то ни было.

Править:

Можно также использовать DBFactories.

DbProviderFactory factory = GiveMeSomeFactory();
IDbCommand command = factory.CreateCommand();
IDataReader r = command.ExecuteReader();

//and create more objects
IDataAdapter adapter = factory.CreateDataAdapter();
IDbConnection conn = factory.CreateConnection();

и затем создайте своего поставщика в другом слое

private DbProviderFactory GiveMeSomeFactory()
{
    if(something)
        return SqlClientFactory.Instance;
    else if(somethingElse)
        return OracleFactory.Instance;
    else if(notThisAndNotThat)
        return MySqlFactory.Instance;
    else
        return WhateverFactory.Instance;

}
16
ответ дан 2 December 2019 в 04:09
поделиться

Метод возвратит объект, который является экземпляром класса, и тот тип класса будет поддерживать IDataReader.

Точка, тип объекта не важен, просто то, что класс реализует интерфейс.

При вождении автомобиля Вы не должны знать, является ли это брод или Тойота, Вы водите автомобиль тот же путь.

Ведущий интерфейс является тем же, после того как автомобиль поддерживает интерфейс, можно управлять им.

Так же с IDataReader, после того как класс, который возвращается, поддерживает интерфейс, можно использовать его.

6
ответ дан 2 December 2019 в 04:09
поделиться

Это возвращает интерфейс, потому что реализация интерфейса не важна, просто API, который обеспечивает интерфейс.

4
ответ дан 2 December 2019 в 04:09
поделиться

Это не возвращает Интерфейс по сути, но вместо этого объект, который поддерживает тот интерфейс.

3
ответ дан 2 December 2019 в 04:09
поделиться

"Возвращается, интерфейс" действительно означает:

Возвращает экземпляр некоторого класса, который реализует тот интерфейс

В этом случае это возвращает объект, очень похожий на a SqlDataReader объект, который позволяет Вам для выполнения методов как Read() и реализации IDisposable и IDataRecord интерфейсы.

4
ответ дан 2 December 2019 в 04:09
поделиться

Это возвращает объект, который реализует этот конкретный интерфейс, и это - все, о чем Вы действительно заботитесь. Объект является a IDataReader, и может выполнить все методы IDataReader имеет.

3
ответ дан 2 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: