Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 381
- Предыдущая
- 381/642
- Следующая
public interface IDataAdapter{ MissingMappingAction MissingMappingAction { get; set; } MissingSchemaAction MissingSchemaAction { get; set; } ITableMappingCollection TableMappings { get; } DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType); int Fill(DataSet dataSet); IDataParameter[] GetFillParameters(); int Update(DataSet dataSet);}Роль интерфейсов IDataReader и IDataRecord
Следующим основным интерфейсом является
IDataReaderIDataReaderpublic interface IDataReader : IDisposable, IDataRecord{ // Плюс члены интерфейса IDataRecord int Depth { get; } bool IsClosed { get; } int RecordsAffected { get; } void Close(); DataTable GetSchemaTable(); bool NextResult(); bool Read(); Dispose();}Наконец, интерфейс
IDataReaderIDataRecordIDataRecordSystem.ObjectIDataRecordpublic interface IDataRecord{ int FieldCount { get; } object this[ int i ] { get; } object this[ string name ] { get; } bool GetBoolean(int i); byte GetByte(int i); long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length); char GetChar(int i); long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length); IDataReader GetData(int i); string GetDataTypeName(int i); DateTime GetDateTime(int i); Decimal GetDecimal(int i); double GetDouble(int i); Type GetFieldType(int i); float GetFloat(int i); Guid GetGuid(int i); short GetInt16(int i); int GetInt32(int i); long GetInt64(int i); string GetName(int i); int GetOrdinal(string name); string GetString(int i); object GetValue(int i); int GetValues(object[] values); bool IsDBNull(int i);}На заметку! Метод
IDataReader.IsDBNull()nullnullnullАбстрагирование поставщиков данных с использованием интерфейсов
К настоящему моменту вы должны лучше понимать общую функциональность, присущую всем поставщикам данных .NET Core. Вспомните, что хотя точные имена реализуемых типов будут отличаться между поставщиками данных, в коде такие типы применяются в схожей манере — в том и заключается преимущество полиморфизма на основе интерфейсов. Скажем, если определить метод, который принимает параметр
IDbConnectionpublic static void OpenConnection(IDbConnection cn){<b> // Открыть входное подключение для вызывающего кода.</b> connection.Open();}На заметку! Использовать интерфейсы вовсе не обязательно; аналогичного уровня абстракции можно достичь путем применения абстрактных базовых классов (таких как
DbConnectionТо же самое справедливо для возвращаемых значений. Создайте новый проект консольного приложения .NET Core по имени
MyConnectionFactoryOleDbMicrosoft.Data.SqlClientSystem.Data.CommonSystem.Data.OdbcSystem.Data.OleDbДалее добавьте в проект новый файл по имени
DataProviderEnum.cs- Предыдущая
- 381/642
- Следующая
