Runtime: рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд┐рдХрд╛рд░рд┐рдХ ADO.NET рдкреНрд░рджрд╛рддрд╛ API рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рд╕рд┐рддре░ 2015  ┬╖  174рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

System.Data.Common рдХреЗ рд▓рд┐рдП рдЬреЛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ

рд▓реЗрдХрд┐рди рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдпрд╛ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдирд╣реАрдВ рд╣реИрдВред рдЕрдХреЗрд▓реЗ DbCommand рдкрд░ рд╣рдо рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

public DbConnection Connection { get; set; }
public DbParameterCollection Parameters { get; }
public DbTransaction Transaction { get; set; }
public DbParameter CreateParameter();
public Task<int> ExecuteNonQueryAsync();
public DbDataReader ExecuteReader();
public DbDataReader ExecuteReader(CommandBehavior behavior);
public Task<DbDataReader> ExecuteReaderAsync();
public Task<DbDataReader> ExecuteReaderAsync(CommandBehavior behavior);
public Task<DbDataReader> ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken);
public Task<DbDataReader> ExecuteReaderAsync(CancellationToken cancellationToken);
public Task<object> ExecuteScalarAsync();

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдпрд╛ рдЕрдореВрд░реНрдд рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдПрдХ рдбреЗрдЯрд░реЗрдбрд░ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ ExecuteReaderAsync рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, ExecuteReader рдирд╣реАрдВ, рдЖрджрд┐ред

рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рджрд╛рддрд╛ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

public interface IDbProviderFactory {
    IDbCommand CreateCommand();
    IDbConnection CreateConnection();
    IDbConnectionStringBuilder CreateConnectionStringBuilder();
    IDbParameter CreateParameter();
}

рдФрд░ рдлрд┐рд░ рд╡рд╣рд╛рдВ рд╕реЗ рдмрд╛рдХреА рдкреНрд░рджрд╛рддрд╛ рддрдХ IDbDataReader , IDbTransaction , рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВред

рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдП рдереЗ рдФрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдкреАрдЖрдИ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдореЗрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ System.Data.Common рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЙрдорди рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЛ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдк System.Data.Common рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдВрдЧреЗред

рдХреГрдкрдпрд╛ рдХреЛрд░рдПрдлрдПрдХреНрд╕ 1.0 рдкрд░ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#14302 рдФрд░ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#15269 рдкрд░ рдЪрд░реНрдЪрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рддред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ

рд╕рд╣реА рд╣реИ, рдФрд░ рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдПрдХ _good_ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдПрдкреАрдЖрдИ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЛ рд▓рдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдорджрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рдЬрдмрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ OOD рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреГрдердХреНрдХрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд (ISP) рдХрд╣рддрд╛ рд╣реИ рдХрд┐ _no рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХрд╛ рд╡рд╣ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛_ред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдЕрдореВрд░реНрддрди рдореЗрдВ рдирдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рддрдГ рд╣реА ISP рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ 'рд╕реЙрд▓рд┐рдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ' рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╣реИрдВ, рдФрд░ рдЖрдк рдмреАрд╕реАрдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП 'рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ' (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджреНрдзрд░рдг рдирд╣реАрдВ; рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЬрд╡рд╛рдмреА рддрд░реНрдХ)ред

6-7 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдореВрд░реНрдд рдореЗрдВ рдирдИ рдХреНрд╖рдорддрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреЗрд╢ рдХрд░реЗрдВред

рд╕рднреА 174 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡реЗ рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдмрджрд▓ рдЧрдП рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрднрд╛рд╕реА рд╣реИрдВ рдЬреЛ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдХрд╣рддреА рд╣реИрдВред рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@ рдЬреЗрдореНрд╕рдПрдирдХреЗ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ .NET Core рдПрдХ рдирдпрд╛ API рд╣реИ рдФрд░ ADO.NET API рд▓рдЧрднрдЧ рдПрдХ рджрд╢рдХ рдореЗрдВ рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╡реИрдз рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ? рд╕рд╛рде рд╣реА, рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд▓рд╛рдЧрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХреА рд▓рд╛рдЧрдд рд╕реЗ рдмреМрдиреА рд╣реИред

@NickCraver , @roji , @FransBouma рдЪреВрдВрдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ ADO.NET API рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рдирд╛ рд╣реИ?

@YoungGah , рдХреНрдпрд╛ рдпрд╣ рдкреАрдЫрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ?

рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрднрд╛рд╕реА рд╣реИрдВ рдЬреЛ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдХрд╣рддреА рд╣реИрдВред рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрдХ рджреВрд░рд╕реНрде рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдПрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдПрдХ virtcall рдкрд░ рдЦреЛ рдЧрдП рдиреИрдиреЛрд╕реЗрдХрдВрдб рдирдЧрдгреНрдп рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ADO.NET рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП .NET рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдПрдкреАрдЖрдИ рдХрд░реЗрдВ) рдФрд░ рдХрд┐рд╕реА рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХреА рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рдЙрдирдХрд╛ рдбреАрдмреА рдХреЛрдб рдЗрддрдирд╛ рдзреАрдорд╛ рд╣реИ;)

рдореИрдВ рдЖрдкрдХреА рд╕реВрдЪреА рдореЗрдВ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдПрдордПрд╕ рдЖрдИрдбреАрдмреАрдХреЙрдореИрдВрдб рдореЗрдВ рдПрд╕рд┐рдВрдХ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрд╛ред рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд▓ рдХреНрдпрд╛ рд▓рд╛рдПрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЛрдВ рдпрд╛ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рдХреБрдЫ рдЖрднрд╛рд╕реА рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░рдг рд╣реИред рд╢рд╛рдпрдж рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг рдХреЗ рд▓рд┐рдП рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрдо рдХрд░рдирд╛? рдореИрдВ рдПрдордПрд╕ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдХрд╣рдиреЗ рджреВрдБрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдореБрдЭреЗ ADO.NET рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рд░реНрдл рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВред

@JamesNK рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдПрдБ рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:

  1. ADO.NET .NET 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдПрдХ рджрд╢рдХ рдмрд╛рдж - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛, рдмрд╕ рдПрд╕рд┐рдВрдХ рд╕рдордХрдХреНрд╖ рдЬреЛрдбрд╝реЗ - рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░рддрд┐рдорд╛рди рдХрднреА рднреА рдЬрд▓реНрдж рд╣реА
  2. CoreFx рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкреБрд░рд╛рдиреЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ CLR рдХреЛ рд╣реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдпрд╣рд╛рдБ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ "рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ" рдкрд░ рдПрдХ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рднреА рдПрдХ рдЦрд╛рд▓реА рдХреНрд╡реЗрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдордПрд╕ рдкрдЯреНрдЯреЗ рдкрд░ рдЦрд░реНрдЪ рдХрд░реЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ _fast_ рдкреНрд░рд╢реНрди ~20ms рд▓рдЧрддреЗ рд╣реИрдВред

рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдердб рд▓реБрдХрдЕрдк рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ NSubstitute рдпрд╛ Moq рдЬреИрд╕реЗ рдорд╛рдирдХ рдЯреВрд▓ рдХреЗ рд╕рд╛рде API рдХреЛ рдореЙрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЖрдЬ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдпрд╣рд╛рдВ рдмрд╣реБрдд рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджреА рдЧрдИ рд╣реИрдВ:

  • рдЙрдкрд░реЛрдХреНрдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдмрдирд╛рдо рдЧреИрд░-рд╡рд░реНрдЪреБрдЕрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдореЗрдВ рдирдЧрдгреНрдп рд╣реИ
  • рдмреЗрд╕ рдХреНрд▓рд╛рд╕ ADO.NET рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреИрд░-рдЖрднрд╛рд╕реА рдЧреИрд░-рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ - ExecuteReader рдХрд╛ рдЕрдзрд┐рднрд╛рд░ рдЬреЛ рдХрдорд╛рдВрдбрдмреЗрд╡рд┐рдпрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдзрд┐рднрд╛рд░ рдХреЗ рд▓рд┐рдП CommandBehavior.Default рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рд╡реИрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдареАрдХ рдЙрд╕реА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде ExecuteReader() рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ...
  • рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдкреНрд░рдореБрдЦ рдореЙрдХрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо Moq рдореЗрдВ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдореЙрдХ рдХрд░рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ?

рддреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ (рд╕рд░рд▓) рд▓рдЧрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдордЬрд╛рдХ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ), рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдпрд╛рдиреА рдЧреИрд░-рдЖрднрд╛рд╕реА рдЧреИрд░-рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ) рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЗ рдбрдВрдкрд┐рдВрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрдВрдЯрд░рдлреЗрд╕ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ...

рдореИрдВ @roji рдХреА рд╣рд░ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

@roji рд╕рд┐рд░реНрдл рдПрдХ рдиреЛрдЯ, рдореИрдВ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореЗрд░рд╛ рдПрдкреАрдЖрдИ рд╕рд╣реА рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ ExecuteDataReader рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ, ADO.NET API рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдврд╛рдВрдЪрд╛ MS Fakes рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдирдХрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред Moq рдФрд░ рдЕрдиреНрдп рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рдореБрджреНрджреЗ рдереЗред

@roji рд╕рд┐рд░реНрдл рдПрдХ рдиреЛрдЯ, рдореИрдВ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рд╕рдордЭрд╛ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЪреАрдЬреЛрдВ рдХреЛ рдХрдореЛрдмреЗрд╢ рд╡реИрд╕рд╛ рд╣реА рдирд╣реАрдВ рд░рдЦрддрд╛ рдЬреИрд╕рд╛ рд╡реЗ .NET рдореЗрдВ рд╣реИрдВ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реИ)?

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореЗрд░рд╛ рдПрдкреАрдЖрдИ рд╕рд╣реА рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ ExecuteDataReader рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ (рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ), Moq рдХрд╛ CallBase рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ

@roji

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрдореЛрдмреЗрд╢ рдЪреАрдЬреЛрдВ рдХреЛ .NET рдореЗрдВ рд░рдЦрдиреЗ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИ)?

рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ API рдХреЛ .NET 1.0 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ 2.0 рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ, рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛.рдХреЙрдорди рдореЗрдВ ProviderFactory рдпрд╛ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИред рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдпрд╛ 2.0 рдпрд╛ рдирдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

Moq рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬреЛрдВ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрд╣рд╛рд╕ рдпреЛрдЧреНрдп рд╣реИрдВред рдХреБрдЫ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдпрд╛ рддреЛ рдЖрднрд╛рд╕реА рдпрд╛ рдЕрдореВрд░реНрдд рд╣реЛ рдЬрд┐рд╕реЗ рд╡рд╣ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рд╡рд╣ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдРрд╕реА рдХрдИ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдВрддрд░рд┐рдХ, рдирд┐рдЬреА рдФрд░ рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдордПрд╕ рдлреЗрдХ рд╣реА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрджрд░реНрдн рдХреЛ рд╢рд┐рдо рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╡реАрдПрд╕ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд┐рд╕рдиреЗ рднреА рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЙрд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдмрд╕ Google, рд▓рдЧрднрдЧ рд╣рд░ рд╕рдорд╛рдзрд╛рди "рд╡рд┐рд░рд╛рд╕рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдПрдВ рдпрд╛ рдПрдХ рд░реИрдкрд░ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдЖрдк рдирдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:

@nvivo рдареАрдХ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ ADO.NET рдХрд╛ рдордЬрд╝рд╛рдХ

рдЬреЛ рдмрд╛рдд рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдкреАрдЖрдИ рдХреЗ рдЖрдВрддрд░рд┐рдХ, рдирд┐рдЬреА рдФрд░ рдЕрдиреНрдпрдерд╛ рдкрд╣реБрдВрдЪ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдордЬрд╛рдХ рдХреНрдпреЛрдВ рдЙрдбрд╝рд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдордЬрд╝рд╛рдХ рдирд╣реАрдВ рдЙрдбрд╝рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реАрдзреЗ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛрдб рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)? рдореБрдЭреЗ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпреЛрдВ (рдЬреИрд╕реЗ 0-рдкреИрд░рд╛рдореАрдЯрд░ ExecuteReader() рдЕрдзрд┐рднрд╛рд░) рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ ADO.NET рдореЗрдВ рдпреЗ рд╣рдореЗрд╢рд╛ (?) рдХреБрдЫ рд╡рд░реНрдЪреБрдЕрд▓ рдЕрдзрд┐рднрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ ExecuteReader (CommandBehavior)), рдХреНрдпрд╛ рдХреЛрдИ рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ?

рдмрд╕ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

@nvivo рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдореБрджреНрджреЗ рдХреЗ рдХрд╛рд░рдг рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХрдИ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдкреАрдЫреЗ рдЫреВрдЯрдиреЗ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрдм .NET Framework 4.5 рдореЗрдВ async рдФрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рд╣рдордиреЗ рдЙрди рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рддреЛ рд╣рдордиреЗ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рдЙрд╕ рд╕рдордп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рдереЗ, рд╡реЗ рдпрд╛ рддреЛ рдЗрдВрдЯрд░рдлреЗрд╕рдлреВрд╡реА2 рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдереЗ рдпрд╛ рдПрд╕рд┐рди рдФрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдереЗред рд╣рдо InterfaceFooV2 рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ API рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝рддреЗ рд░рд╣реЗрдВ, рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВред

@roji рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдереЗ рдЬрд╣рд╛рдВ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ ExecuteReader рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдзрд┐рднрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рди рдХрд┐ "рдХреЛрдИ рднреА рдЕрдзрд┐рднрд╛рд░"ред рдпрд╣ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдкрд░ рдирд╣реАрдВред

@YoungGah рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рддрдм рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд╣реИ? рдХреЛрд░ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рдЧрднрдЧ рдПрдХ рджрд╢рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдРрдкреНрд╕ рдХрд╛ рдХреЗрдВрджреНрд░ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ? рдпреЗ .NET рдореЗрдВ рдХреБрдЫ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ, рдЗрди рдмреНрд░реЗрдХ рдХреЛ рд╣рдЯрд╛рдХрд░ рдкреНрд░рддреНрдпреЗрдХ ADO .NET рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдПрдХ рдХреГрддреНрд░рд┐рдо рд╡рд┐рдЦрдВрдбрди рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд░рд╛рд╢рд╛ рдФрд░ рднреНрд░рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ CoreCLR рдХреЛ рдЕрдкрдирд╛рдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдЖрдк рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЗ рдмрдВрдж IDbCommand рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд░реЛрдд рд╕рдВрдЧрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

public interface IDbCommand
{
    //...
}

public class DbCommand : IDbCommand
{
    void NewApi();
}

public static class DbCommandExtensions
{
    public static void NewApi(this IDbCommand cmd)
    {
        ((DbCommand)cmd).NewApi();
    }
}

DNX рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрд░ IDbCommand рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрднреА рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдКрдкрд░ рдХреА рд░рдгрдиреАрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдмрд╛рдж рдореЗрдВ рднреА (рдПрдХ рдкреНрд░рдореБрдЦ рдмреНрд░реЗрдХрд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ) рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд░реЛрд▓ рдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЛрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдорд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рдореЗрдВ рдХреЛрд░ рд╕реНрдерд┐рд░ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк CoreCLR рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореБрдЭреЗ @davkean рджреНрд╡рд╛рд░рд╛ рдХреЛрд░ рдПрдбреАрдУ .NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдореМрдЬреВрджрд╛ .NET рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рдкрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдерд╛рд╣ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдП рдмрд┐рдирд╛ рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЬрд┐рд╕реЗ рдореИрдВ рдпрд╣рд╛рдВ рдорд╛рдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ- рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рдерд╛ред

EF рдХреА .NET рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ ORM рд╣реЛрдиреЗ рдХреА рднреВрдорд┐рдХрд╛ рдФрд░ рдмрд╛рдЬрд╛рд░ рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕рдХреА рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЕрднреА рднреА .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рдЖрдмрд╛рджреА рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рдХреЛрд░рд╕реАрдПрд▓рдЖрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдореЛрдиреЛ/рд▓рд┐рдирдХреНрд╕/рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЖрд░рдбреАрдмреАрдПрдордПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред рдЪреВрдБрдХрд┐ CoreCLR Linux/OSX рдбреЗрд╡рд▓рдкрд░ рдмрд╛рдЬрд╝рд╛рд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдСрд▓реНрдЯ RDBM рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдорд╛рдЗрдХреНрд░реЛ рдУрдЖрд░рдПрдо рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЗрд╡реЛрдВ рдХреА рдЖрдмрд╛рджреА рдХрд╛ рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдг рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдордПрд╕ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд╣ рдУрдЖрд░рдПрдо рдЪреБрди рд╕рдХреЗрдВ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рджреЗрдЦрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕рдХреНрд░рд┐рдп .NET OSS (рдпрд╛рдиреА рдПрдВрдЯреА-рдбрд╛рд░реНрдХ рдореИрдЯрд░) рджреЗрд╡реЛрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛ рдУрдЖрд░рдПрдо рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЗрд╡реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЙрдЪреНрдЪ рд╕рд╣рд╕рдВрдмрдВрдз рд╣реИ, рдЗрд╕реА рддрд░рд╣ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрд░рд╕реАрдПрд▓рдЖрд░ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдЪреНрдЪ рд╕рдВрдмрдВрдз рд╣реЛрдЧрд╛ - рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдореБрдЦ рдореВрд▓реНрдп рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдУрдПрд╕рдПрдХреНрд╕/рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпреЗ рдХреБрдЫ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореМрд▓рд┐рдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдЖрд╕рдкрд╛рд╕ рдХреЗ .NET рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдлрд╛рдпрджреЗрдордВрдж рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдУрдЖрд░рдПрдо рдбрд╛рдЙрдирд▓реЛрдб

NuGet рдбрд╛рдЙрдирд▓реЛрдб рдкрд░ рдПрдХ рд╕рд░рд╕рд░реА рдирд┐рдЧрд╛рд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдХрд┐ рдЧреИрд░-EF рдмрд╛рдЬрд╛рд░-рд╢реЗрдпрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

NHibernate - 1M+
рдбреИрдкрд░ - 1M+
рдУрдЖрд░рдПрдорд▓рд╛рдЗрдЯ - 500k+
рд╕рд░рд▓ред рдбреЗрдЯрд╛ - 300k+
рдкреЗрдЯрд╛рдкреЛрдХреЛ - ~ 100k
рдПрдирдкреЛрдХреЛ - 30k+

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдорд╛рдЗрдХреНрд░реЛ рдУрдЖрд░рдПрдо рдЬреИрд╕реЗ рдбреИрдкрд░, рдореИрд╕рд┐рд╡, рдкреЗрдЯрд╛рдкреЛрдХреЛ, рдПрдирдкреЛрдХреЛ, рдЖрджрд┐ рдХреЛ рдПрдХ рд╣реА рдбреНрд░реЙрдк-рдЗрди .cs рдореЗрдВ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП NuGet рдЗрд╕рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрд▓рдПрд▓рдмреАрдПрд▓рдЬреЗрди рдкреНрд░реЛ рдЬреИрд╕реЗ рдмрдВрдж рд╕реНрд░реЛрдд рдУрдЖрд░рдПрдо рднреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреБрдЧреЗрдЯ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реИрд╕реЗ рд╣реА рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрдИ рдЕрдиреНрдп рдУрдЖрд░рдПрдо рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рднреВрд▓ рдЧрдпрд╛/рдкрддрд╛ рдирд╣реАрдВ рд╣реВрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдУрдЖрд░рдПрдо рдкрд░ рдкреНрд░рднрд╛рд╡

GitHub рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрд░ рд╣реИ
рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд IDbConnection , IDbCommand рдФрд░ IDataReader ADO .NET рдЗрдВрдЯрд░рдлреЗрд╕:

рдЖрдИрдбреАрдмреА рдХрдиреЗрдХреНрд╢рдирдЖрдИрдбреАрдмреАрдХрдорд╛рдВрдбрдЖрдИрдбреАрдЯрд╛ рд░реАрдбрд░
NHibernate59резреорезрезрейреи
рд╡реНрдпрд╡рд╕рд╛рдпрд┐рдХ172117
рдУрдЖрд░рдПрдорд▓рд╛рдЗрдЯрезренреп5426
рд╕рд░рд▓ред рдбреЗрдЯрд╛29реирен6
рдПрдирдкреЛрдХреЛ4103

рдиреЛрдЯ: рдпреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЯреВрдЯреЗ рд╣реБрдП рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред

рдЧреНрд░рд╛рд╣рдХ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдкреНрд░рднрд╛рд╡

рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рднрд╛рд╡ рдЗрди рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкреНрд░рднрд╛рд╡ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреА рддреЛрдбрд╝рддрд╛ рд╣реИ
рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдорд╛рдЗрдХреНрд░реЛ рдУрдЖрд░рдПрдо ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕рд┐рд░реНрдл рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ
рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

IDbConnection db = ...

//Dapper
db.Query<Dog>("select Age = <strong i="49">@Age</strong>, Id = @Id", new { Age = (int?)null, Id = guid });

//OrmLite
db.Select<Author>(q => q.Name.StartsWith("A"));

рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рдУрдЖрд░рдПрдо "рдУрдкрди рдПрдВрдбреЗрдб" рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдУрдЖрд░рдПрдо рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдпреЗ рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдЬреЛ IDbConnection рдЖрд╕рдкрд╛рд╕ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЕрдм рднреА CoreCLR рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрд░ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдЬреИрд╕реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдврд╛рдВрдЪреЗ рдореЗрдВ

рд╕рд╛рд░рд╛рдВрд╢

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЪрдХрд┐рдд рд╣реВрдВ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдХрднреА рднреА .NET рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдмрдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдЙрджреНрджреЗрд╢реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ ADO.NET рдПрдХ рд╣реИ
.NET рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг "рдУрдкрди рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдореЙрдбрд▓"ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрд┐рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдиреЗ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдореМрдЬреВрджрд╛ .NET рдХреЛрдб рдмреЗрд╕ рдЬреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдИрдПрдл .NET рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╡рдзрд╛рди рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ .NET 4.x рдФрд░ CoreCLR рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдПрдХ рдкреНрд░рдореБрдЦ рдмрд╛рдзрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рд╢рд┐ рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╕рднреА рдореМрдЬреВрджрд╛ рдХреЛрдб-рдмреЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд░реНрддрдорд╛рди рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ ADO.NET/CoreCLR рдХреЛ EF рдФрд░ SQL рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдмрд╛рдХреА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреА рдЕрд╡рд╣реЗрд▓рдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреИрд░-рдкрд╛рд░рджрд░реНрд╢реА рдмреНрд░реЗрдХрд┐рдВрдЧ рдирд┐рд░реНрдгрдп рдХреЗрд╡рд▓ рдЗрд╕ рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ .

.NET рдЯреАрдо рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ (рдореИрдВ рдЕрдм рд░реЛрд╕рд▓рд┐рди рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ), рдореИрдВ SQL рдФрд░ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирдП рдбреЗрдЯрд╛ рдХреЙрдорди рдХреЗ рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рднрд╛рд░реА рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдерд╛ред рдореИрдВ рдЗрд╕ рд╕рдордп рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдХреБрдЫ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗ рдЬреЛ рдореИрдВ рдЯреНрд╡рд┐рдЯрд░ рдФрд░ рдКрдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

.NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП System.Data.Common рдХрд╛ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рджрд┐рд╕рдВрдмрд░ 2012 рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ, рд╣рдорд╛рд░реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЗ рд▓рдЧрднрдЧ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗред

рд▓рдХреНрд╖реНрдп:

  • .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ, рдЬрд┐рд╕рдиреЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдХрдо рдХрд┐рдпрд╛ ( IDbConnection рдмрдирд╛рдо DbConnection ), рднреНрд░рдо, рдЧрд▓рддрд┐рдпрд╛рдБ рдФрд░ рд▓реЗрдпрд░рд┐рдВрдЧ рдореБрджреНрджреЗ (рдбреЗрдЯрд╛рдХреЙрдорди рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд SqlClient, рдХреЛрд░ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд╕реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ) .NET 1.0 рд╕реЗ рдореВрд▓ рдбрд┐рдЬрд╛рдЗрдиред рдПрдХ рдЬрд┐рд╕реЗ рдореМрдЬреВрджрд╛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдФрд░ _new_ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдкреНрд░рджрд╛рддрд╛рдУрдВ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ .NET рдХреЛрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдПрдХрд▓ рдмрд╛рдЗрдирд░реА/рд╕реНрд░реЛрдд рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЙрд╕реА рдмрд╛рдЗрдирд░реА рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рд╛рдПрдВред рдзреНрдпрд╛рди рджреЗрдВ, рдЙрд▓реНрдЯрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдерд╛; .NET Framework рдмрд╛рдЗрдирд░реА/рд╕реНрд░реЛрдд рд▓реЗрдиреЗ рдФрд░ .NET рдХреЛрд░ рдкрд░ рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗред

рдЪрд╛рд░реЛрдВ рдУрд░ рдлреИрд▓рд╛рдИ рдЬрд╛ рд░рд╣реА рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рд╕реБрдзрд╛рд░:

  • рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗ рдЦрдбрд╝реЗ рд╣реИрдВ рд╕рдВрд╕реНрдХрд░рдг рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ @mythz рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░рджрд╛рддрд╛ рд╡реИрд╕реЗ рднреА рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • System.Data.Common _has not_ рдкреНрд░рджрд╛рддрд╛ рдореЙрдбрд▓ рд╕реЗ рджреВрд░ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рдереЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╡рд┐рд░рд╛рд╕рдд .NET 1.0 рдЕрд╡рдзрд╛рд░рдгрд╛ рдереА рдЬрд┐рд╕реЗ .NET 2.0 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд/рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд┐рд╕ рд╕рдордп рд╣рдордиреЗ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд╛рддрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рдереЗред
  • рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рддрд░рд╣, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдирдХрд▓реА рд╣реИрдВред
  • рд╣рдо рд╕рдордЭ рдЧрдП рдереЗ рдХрд┐ .NET 1.0 рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкреЛрд░реНрдЯ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AutoMapper рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдпреЗ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВ: (https://github.com/AutoMapper/AutoMapper.Data/blob/master/AutoMapper.Data/DataReaderMapper.cs#L14)ред

рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ:

рд╣рдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ

рдХреЛрд░рд╕реАрдПрд▓рдЖрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрднреА рддрдХ рдареАрдХ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдареАрдХ рд╣реИ?

рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ @mythz рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░рджрд╛рддрд╛ рд╡реИрд╕реЗ рднреА рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдИрдУрдПрд▓ рдареАрдХ рдХрд░реЗрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдлрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдереЗ рдФрд░ рдЕрдм рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд░ рджреВрд╕рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрди рдХреЛрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрде рдХреЗ рдХрднреА рднреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд, рдкреНрд░рд╕рд┐рджреНрдз, рд╕реНрдерд┐рд░ рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрдВрдбрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдпрд╣ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдмрдВрджрд░рдЧрд╛рд╣ рд╣реИред

рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреА рд╣реИ, рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИред

рдпрд╣рд╛рдБ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рджреЗрдЦрднрд╛рд▓ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдореМрдЬреВрджрд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рддреЛрдбрд╝рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕реЗ ADO .NET рдХреЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рдмрд╛рдЬрд╛рд░ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде рднреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╣рдо рдореМрдЬреВрджрд╛ 4.x рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднреА рд╣рдореЗрдВ CoreCLR рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ - рддреЛ рдпрд╣ рдореМрдЬреВрджрд╛ 4.x рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ CoreCLR рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдбреЙрдХреНрд╕/рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рднреА рдирдХрд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдХреЛрд░рд╕реАрдПрд▓рдЖрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрднреА рддрдХ рдареАрдХ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдареАрдХ рд╣реИ?

.NET рдХреЛрд░ рдореЗрдВ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдирд░реА рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреНрд░рдердо рдкрдХреНрд╖ рдФрд░ рддреГрддреАрдп рдкрдХреНрд╖ .NET рдХреЛрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХреЗрдВ, рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЪрд▓рд╛ рд╕рдХреЗрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╡реЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рддреЛ рдЙрди рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖред рдореИрдВ @YoungGah рдФрд░ @saurabh500 рд╕рд╣рд┐рдд рдореМрдЬреВрджрд╛ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рджреВрдВрдЧрд╛ ред

рдХреЗрд╡рд▓ рдереНрд░реЗрдб рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Microsoft рдХреЛ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдЙрдирдХреЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдЖрд╕рд╛рдиреА рд╕реЗ .NET рдХреЛрд░ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛?

рдЕрдкрдиреЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП, рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛ рд╣реИ?

рд╣рд╛рдВред

рдХреЗрд╡рд▓ рдереНрд░реЗрдб рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Microsoft рдХреЛ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдЙрдирдХреЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдЖрд╕рд╛рдиреА рд╕реЗ .NET рдХреЛрд░ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛?

рд╣рд╛рдВред рдпрджрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ (рдПрд▓рдПрд▓рдмреАрдПрд▓рдЬреЗрди рдкреНрд░реЛ) рдХреЛ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдЕрдм рдЯреВрдЯ рдЧрдП рд╣реИрдВ: рдореБрдЭреЗ 2 рдПрдкрд┐рд╕ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЕрдкрдиреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХреЛрдбрдмреЗрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╣рдорд╛рд░рд╛ рд╕рд╛рдорд╛рди рддреЛрдбрд╝ рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рджрд░реНрдж рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛, рд╣рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИ: рдореБрдЭреЗ рдпрд╛ рддреЛ рдПрдХ рдХрд╕рд╛рдИ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рд╣реИ рдФрд░ 2 рдПрдкреАрдЖрдИ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдареАрдХ рдерд╛ред

рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬреИрд╕реЗ рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд╣реЛрддрд╛ рд╣реИред CoreFX рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

.NET рдХреЛрд░ рдореЗрдВ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдирд░реА рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреНрд░рдердо рдкрдХреНрд╖ рдФрд░ рддреГрддреАрдп рдкрдХреНрд╖ .NET рдХреЛрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХреЗрдВ, рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЪрд▓рд╛ рд╕рдХреЗрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╡реЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рддреЛ рдЙрди рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди: рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝реЗрдВ рдЬреИрд╕реЗ рд╡реЗ рдЕрднреА рд╣реИрдВред рдФрд░ рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕рднреА рдЕрдкрдиреЗ рд╣реЛрд╢ рдореЗрдВ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╣ рдирд┐рдпрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрд╡рдХреВрдлреА рднрд░рд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА рдФрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдПрдордПрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рджреЗрд░ рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рдпрдо рдХрд╛рдЧрдЬ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рджреВрд╕рд░рд╛ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдордПрд╕ рдЯреАрдо рдХреЛ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрджрд┐ рдЖрдк рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ/рдкреАрдЖрд░ рд╣реБрдкрд▓рд╛ рдореЗрдВ рдЗрддрдиреЗ 'рдЦреБрд▓реЗ' рдФрд░ 'рдЕрд▓рдЧ' рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рджрд┐рдЦрд╛рдПрдВред System.Data рдФрд░ CoreFX рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣реА рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ 'MS рдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╛рдХреА рд╕рднреА рдХреЛ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдмреИрдХрдмрд░реНрдирд░ рдкрд░ рд╣реИ рдпрд╛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ'ред

рдПрдХ рдФрд░ рдмрд╛рдд рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛: рдлрд╛рдЙрд▓рд░ рдиреЗ рдХрд▓ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЕрдкрдирд╛ рд╕рд╛рдорд╛рди рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреЗ 500K рдПрд▓рдУрд╕реА рдХреЛрдбрдмреЗрд╕ рдХреЛ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╕рдордп, рдкреНрд░рдпрд╛рд╕ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЕрддрд┐рд░рд┐рдХреНрдд рдШрд░реНрд╖рдг рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреГрддреНрд░рд┐рдо рд╣реИ (рдпрд╣ рдПрдХ рдирдпрд╛ рдордВрдЪ рд╣реИ! рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рдирд┐рдпрдо рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдЭ рджреЗрддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рд╕рдм рдЖрдкрдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдФрд░ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рдмрд╛рдд рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ: рдХреНрдпрд╛ _if_ рд╣рдо рдЕрдкрдирд╛ рдХреЛрдб рдФрд░ рдореЗрд░реЗ рд╕рд╛рде рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдЕрдкрдиреЗ рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдЖрдкрдХреЗ рдирдП рдЪрдордХрджрд╛рд░ рдврд╛рдВрдЪреЗ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдкрдиреЗ рдкреИрд╕реЗ рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдЬрдм рднреА рдореИрдВ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ, рдЕрдЬреАрдм рдирд┐рдпрдореЛрдВ рдФрд░ рдЕрдВрддрд╣реАрди рдмрд╣рд╕реЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред . Iow: рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдХреЗрд▓рд╛рдкрди рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕рд╛рде рд╣реА рдЖрдк рдЗрддрдиреЗ рд╕рдЦреНрдд рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЖрдкрдХреЗ рдирдП рдЪрдордХрджрд╛рд░ рдврд╛рдВрдЪреЗ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ : рдореБрдЭреЗ рдпрд╣ рдврд╛рдВрдЪрд╛ рдмреЗрдЪреЛ, рдпрд╣ рдирдпрд╛ CoreFXред рдЦреИрд░, рдШрд░реНрд╖рдг рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдФрд░ рджреВрд░ рдХрд┐рдП рдЧрдП рдкрдиреАрд░ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдордп (рдФрд░ рдкреИрд╕рд╛) рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

рдмрд╕ рдореЗрд░реЗ 2 рд╕реЗрдВрдЯред

@FransBouma рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рдкреЗрд╢реЗрд╡рд░, рдЙрддреНрдкрд╛рджрдХ рдФрд░ рддрдереНрдпреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЙрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ:

1) IDbConnection.OpenAsync рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
2) рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЕрдм .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдПрдХ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд/рд▓рдХреНрд╖реНрдп рдХреЛ рддреЛрдбрд╝рдирд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛ рдерд╛)ред рдпрд╣ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдбрд┐рдЬрд╛рдЗрдирд░ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╡реАрдПрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рднреА рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
3) .NET Framework рдХреЛ рдЕрдк-рдЯреВ-рдбреЗрдЯ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо IDbConnection.OpenAsync рдХреЗ рд╕рд╛рде .NET Framework "4.7" рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВред
4) рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ IDbConnection рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣рд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдЕрдм .NET Framework "4.7" рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреА рдирд┐рд░рд╛рд╢рд╛ рд░рдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдордПрд╕ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдЪрд▓рддреА рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдФрд░ рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдЧреБрд▓рд╛рдм рдФрд░ рдЗрдВрджреНрд░рдзрдиреБрд╖ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЧреИрд░-рдкреЗрд╢реЗрд╡рд░ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╣реЛ, рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдордПрд╕ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреЗрд╢реЗрд╡рд░ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВред

рдЙрд╕ рдиреЗ рдХрд╣рд╛: рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╢рд╛рджреА рдирд╣реАрдВ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡реЗ рдЪрд▓реЗ рдЧрдП рд╣реИрдВ, рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддрдм рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдЙрджрд╛рд╕ рдкрд╛рдВрдбрд╛ рдирд╣реАрдВ рдмрдирд╛рдпреЗрдЧрд╛: рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдЬ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рд╕рднреА рдкреНрд░рдореБрдЦ ADO.NET рдкреНрд░рджрд╛рддрд╛ рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ (рдпрд╣ рдкрд┐рдЫрд▓реЗ IIRC рдореЗрдВ ODP.NET рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди)ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкрд╣рд▓реЗ рдКрдкрд░ рдЙрдард╛рдпрд╛ рдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдирд╛ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рдереАред рддрдм рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдерд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИред

рд╣рдо рдордВрдЧрд▓ рдЧреНрд░рд╣ рдкрд░ рдПрдХ рдирд┐рд░реНрд╡рд╛рдд рдореЗрдВ рдирд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░/рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдм рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЗрди рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд░реНрддрдорд╛рди .NET рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдкрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрди рдврд╛рдВрдЪреЗ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдиреНрд╣реЗрдВ CoreFX рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдПрдХ рдмрдбрд╝рд╛ PITA рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рдВрдЦреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдХреНрд╕рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ CoreFX (рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдХрд╛ рдХрд╛рд░рдг) рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдХреЗрд▓реЗ рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирд╣реАрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП async рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ)ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреА рдХрдореА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЗрд░реА рдирд╣реАрдВред рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдФрд░ (рдЕрдм рдкреИрд░рд╛рдлреНрд░реЗрд╢рд┐рдВрдЧ) рдЙрд╕ рдкрд░ рдПрдордПрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ: рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ "рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛!" рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рджреЗрдВред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╡рд┐рд▓рд╛рд╕рд┐рддрд╛ рдирд╣реАрдВ рд╣реИред рддреБрдордиреЗ рдпрд╣ рдЧрдбрд╝рдмрдбрд╝реА рдкреИрджрд╛ рдХреА, рддреБрдо рдЗрд╕реЗ рд╕реБрд▓рдЭрд╛рдУред рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдкреЛрд░реНрдЯ рдХрд░ рджреВрдВ, рдЖрдкрдХреЗ рдирдП рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдФрд░ рдкреИрд╕рд╛ (рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛) рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рдЖрдк _your_ рд╕рдорд╕реНрдпрд╛ _my_ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдЕрдкрдиреЗ 4 рдХрджрдо рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП: рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдФрд░ рд╡реИрд╕реЗ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ? рдпрд╣ рдЙрди рд╕рднреА рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХреЛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдХрдард┐рди рд╕рдмрдХ рд╕реАрдЦреЗ, рдлрд┐рд░ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ CoreFX рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕рд░рд▓, рддреЗрдЬ рдФрд░ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рджреЛ рдХреЛрдб рдмреЗрд╕ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛ рддреЛ рдирд╣реАрдВ рд╣реЛрдЧрд╛): рд╣рдо 1 рдПрдкреАрдЖрдИ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдХреЛрдИ рдХреБрдЫ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдПрдордПрд╕ рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рдЯреАрдо рдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡рд╛рдпреЛрд▓рд╛ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЗрд╡рд▓ рдПрдХ рдореБрдЯреНрдареА рднрд░ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕реНрдЯреИрдХ рджреЗрд╡ рдЪрд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдФрд░ рджреЛ рд╕рдбрд╝рдХреЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

(рдЙрджрд╛рд╣рд░рдг: рдХреЙрдореНрдкреИрдХреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ 'SerializableAttribute' рднреВрд▓ рдЧрдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдПрдХ рдбрдореА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬреЛ рдЙрд╕ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдЬреЛ рд╕реНрд╡рдпрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ)

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдбрд╝рдХреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдЧрдд рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рд╕реАрдорд┐рдд рд╣реИред рдореИрдВ рдЕрдм рдпрд╣рд╛рдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдирд┐рдпрдо рддреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЪреАрдЬреЛрдВ рдХреЛ 'рд╕рдВрдЧрдд' рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдирд╛ рди рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрддрд░ рдкрд░, рдмрд▓реНрдХрд┐ рдПрдкреАрдЖрдИ _behavior_ рд╕реНрддрд░ рдкрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрд┐ рдПрдкреАрдЖрдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╡реЗ рджреЛрдиреЛрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ (CoreFX рдФрд░ .NET Full) рдмрд╣реБрдд рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд╣реИ: рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ CoreFX рдФрд░ .NET рдкреВрд░реНрдг рдкрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдХреЗрд▓реЗ CoreFX рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреЛрдб рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреВрд░реНрдг .NET рдкрд░ 100% рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рдХреИрд╕реЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? CoreFX рдкрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ 20 рдХреЙрд▓ рдбреАрдк рдиреЗ .NET рдкреВрд░реНрдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреНрдп рдХреЛрдб рдХреЛ рдЫреБрдЖ рд╣реИ, рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВред

рдЗрд╕ рд╕рдм рдореЗрдВ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ: рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдврд╛рдВрдЪрд╛ рд╣реИ: рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб .NET рдкреВрд░реНрдг рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ:

1) рдПрдХ рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рдХреЛрдб рдЖрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 100% CoreFX рдкрд░ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ dll рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрдг .NET рдкрд░ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╣реИ
2) рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдПрдХ рдХреЛрдб рдЖрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 70% CoreFX рдкрд░ рдФрд░ 100% .NET рдкрд░ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ 2 dll рджреЗрддрд╛ рд╣реИ: рдПрдХ CoreFX рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ .NET рдкреВрд░реНрдг рдХреЗ рд▓рд┐рдПред CoreFX рд╕рдВрд╕реНрдХрд░рдг рдХреЛ .NET рдкреВрд░реНрдг рдкрд░ рдЪрд▓рд╛рдирд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ 30% рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдЪреВрдХ рдЬрд╛рддрд╛ рд╣реИред

1 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭрддрд╛ рд╣реВрдБред 2 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЬреЛ рд╕рднреА рдореМрдЬреВрджрд╛ .NET рдкреВрд░реНрдг рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдврд╛рдВрдЪреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ _all_ рддреГрддреАрдп рдкрдХреНрд╖ рдУрдЖрд░рдПрдо) рдЖрдкрдХрд╛ рдмрд┐рдВрджреБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд░реНрде рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡реИрд╕реЗ рднреА 2 рдбреАрдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ 2 рдХреЛрдбрдмреЗрд╕ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд░рдирд╛ рд╣реИ рдЕрд▓рдЧ рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд▓рдЧ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ CoreFX рдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ .NET рдкреВрд░реНрдг (рдЬреЛ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВред (рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ: рдпрджрд┐ рдЖрдк рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдореЗрдВ DbDataReader.GetSchemaTable() рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдордПрд╕ рдиреЗ рдЗрд╕реЗ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдкрд░ рдбреАрдмреАрдбреЗрдЯрд╛ рд░реАрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреЛрдбред рдиреЗрдЯ рдкрд░ рднреА рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ рдпрд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред Iow: рдХреЛрдб рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЪреАрдЬреЗрдВ рдЬреЛ _both_ рдврд╛рдВрдЪреЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ CoreFX рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)ред

CoreFX рдкрд░ рдХреЛрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рд╕реНрдерд┐рддрд┐ 2 рдореЗрдВ рдврд╛рдВрдЪреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдмрди рдЬрд╛рддреА рд╣реИ) рдПрдХ рд▓рдЧрд╛рддрд╛рд░: рд╡реЗ рдПрдХ рдврд╛рдВрдЪрд╛ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ 1 рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдПрдкреАрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдврд╛рдВрдЪреЗ 1 рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдврд╛рдВрдЪреЗ рдмрди рдЬрд╛рдПрдВ) рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдорд┐рд▓рд┐рдпрди рдбреЙрд▓рд░ рдХрд╛ рдмрдЬрдЯ рдирд╣реАрдВ рд╣реИ, рдУрдЖрд░рдПрдо рд░рдирдЯрд╛рдЗрдо рдкрд░ 15+ рд▓реЛрдЧ рдФрд░ рд╣рдорд╛рд░реА рддрд░рдл рдПрдХ рдмрдбрд╝реА рдкреАрдЖрд░ рдорд╢реАрди рд╣реИ рдЬреЛ рдЭреБрд░реНрд░рд┐рдпреЛрдВ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░реЗрдЧреА рд╡рд╣рд╛рдБ рд╕реЗ рдмрд╛рд╣рд░ рд╣рд░ рдРрдк рдХреЛ рддреЛрдбрд╝рдирд╛ред рддреЛ рд╣рдо рдпрд╛ рддреЛ 2 рдореЗрдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВ) рдпрд╛ рдПрдордПрд╕ рд╕реЗ 1 рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдорджрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдпрд╣рд╛рдВ рдпрд╣реА рджрд╛рдВрд╡ рдкрд░ рд▓рдЧрд╛ рд╣реИред рдЖрдкрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдХрд╣рд╛ "рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП"ред рд╣рдордиреЗ рдХрд┐рдпрд╛ред рдмрд╛рд░-рдмрд╛рд░ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ System.Data рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдИ рд╕рдВрдЪрд╛рд░

рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рднрдЧрд╡рд╛рди 'рдЧреИрд░-рдкреЗрд╢реЗрд╡рд░' рди рдХрд░реЗ, рддреЛ рдРрд╕рд╛ рд╣реА рд╣реЛред

рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЛрдИ рднреНрд░рдо рдирд╣реАрдВ рд╣реИред рдбреЗрдЯрд╛: рдпрд╣ рдкреЛрд░реНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЯреНрд░реЗрдирд╡реНрд░реЗрдХ рд╣реЛрдЧрд╛ рдФрд░ рдЪреВрдВрдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд░реА рд▓реЛрдЧреЛрдВ рд╕реЗ рдХреЛрдИ рд╕рдВрдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, @davkean , рдпрд╣ рдХреБрдЫ рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд╕рдВрдЪрд╛рд░ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░рд╛рд╢рд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдмрд▓реНрдХ рдЗрдВрд╕рд░реНрдЯ рдФрд░ рд╕реНрдХреАрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рднреА рдЪрд╛рд╣рд┐рдПред рдЗрди рд▓рд╛рдкрддрд╛ рдХреЛрд░ (рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ) рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдпрд╛ рд╕рдВрдЪрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рджреЗрдЦреЗрдВ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#15269 рдФрд░ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#14302)ред рдлрд┐рд░ рднреА, Microsoft рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдХреЛ "рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░" рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдмрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ "рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ" рдХрд╛ рд╕рдВрджреЗрд╢ рд╣реИред рдпрд╣ред рдореВрд▓ рдЪреАрдЬреЗрдВ рдЧрд╛рдпрдм рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЗрди рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред

рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#14302 ("рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рд╡реНрдпреВ/рд╕реЗрдЯ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдХреНрдпреЛрдВ рд╣реИ?") рдкрд░ рдЕрдВрддрд┐рдо рдЕрдкрдбреЗрдЯ рджреЗрдЦреЗрдВ, рдпрд╣ 22 рджрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реИ:

рддреЛ System.Data.Common рдЕрдм CoreCLR рдХреЗ V1 рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕реБрд╡рд┐рдзрд╛ рд╣реИ?

рд╣рд╛рдВ, рдирд┐рд░рд╛рд╢рд╛ рдЧреИрд░-рдкреЗрд╢реЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддреА рд╣реИред рдкрд╛рда рдХрд╛ рд╕реНрд╡рд░ рдФрд░ рд╕рдВрджрд░реНрдн рдмреЗрдХрд╛рд░ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрд╣реА рд╕реАрдорд┐рдд рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдпрд╣рд╛рдВ рдЙрддреНрдкрд╛рджрдХ рдмрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдХреА рдУрд░ рд╕реЗ System.Data рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдЧрддрд┐ рдкрд░ рдХрд╛рдлреА рдХреБрдЫ рдкрддреНрдерд░рдмрд╛рдЬреА рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рд╡рд╣ рд╣реИ, рдХреБрдВрдж рд╣реЛрдирд╛, рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рдХреНрд░реБрджреНрдз рдХрд░рдирд╛ рдФрд░ рдЗрди рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред

рд╣рдореЗрдВ рдЗрди рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЯреБрдХрдбрд╝реЛрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ - рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдХрдареЛрд░ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рд╣рдордиреЗ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдбреИрдкрд░ рдХреЛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреА рдХрдореА, рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреАрдорд╛ рдЬрд╛рдирдХрд╛рд░реА, рдереЛрдХ рд╕рдореНрдорд┐рд▓рди, рдФрд░ рдРрд╕реЗ "рд░рд┐рд▓реАрдЬ рдЙрдореНрдореАрджрд╡рд╛рд░" рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред Microsoft рд╡рд╣ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдХреЛ RC рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдирд┐рд░рд╛рд╢рд╛ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИ рдЬрдм рдпрд╣ рд▓рдЧрднрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реИ рдХрд┐ рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд▓реЗрдмрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЧрд▓рдд рд▓реЗрдмрд▓ рд╣реИ рдФрд░ рдПрдХ рдРрд╕рд╛ рд╣реИ рдЬреЛ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдХрд╛рдлреА рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдордирдорд╛рдирд╛ рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдЬрд┐рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛)ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдХреЛрдИ рднреА рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░рд╛рд╢рд╛ _level_ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рдП рдЬрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдЖрдЗрдП рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрди рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд╛рдЦреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП 1M+ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд╛рде NHibernate рдХреЛ рди рднреВрд▓реЗрдВ:

| рдЖрдИрдбреАрдмреА рдХрдиреЗрдХреНрд╢рди | рдЖрдИрдбреАрдмреА рдХрдорд╛рдВрдб | рдЖрдИрдбреАрдЯрд╛ рд░реАрдбрд░ |
| --- | --- | --- |
| 59 | резреорез | 132 |

рд╡рд░реНрддрдорд╛рди рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ ADO.NET/CoreCLR рдХреЛ EF рдФрд░ SQL рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдмрд╛рдХреА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреА рдЕрд╡рд╣реЗрд▓рдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреИрд░-рдкрд╛рд░рджрд░реНрд╢реА рдмреНрд░реЗрдХрд┐рдВрдЧ рдирд┐рд░реНрдгрдп рдХреЗрд╡рд▓ рдЗрд╕ рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ .

рдпрд╣ рдзрд╛рд░рдгрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рд╕реЗ рдкреБрд╖реНрдЯ рд╣реЛрддреА рд╣реИ: https://github.com/dotnet/corefx/issues/4646

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдПрд╕рдХреНрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рд╕реЗ рдЙрд╕ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореБрдЭреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рдХреНрдпрд╛ .NET рдХреЛрд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмреЛрдЭ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ? рд╕реНрдХреАрдорд╛ рдФрд░ рдбреЗрдЯрд╛рдЯреЗрдмрд▓реНрд╕ рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд╛рддрд╛ .NET рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рдВрдЧрдд рд╣реИ, рддреЛ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреА? рдпрджрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╣рд╛рдиреЗ рдкреБрд░рд╛рдиреЗ рдврд╛рдВрдЪреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рдВрддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдирдП рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ рднреА, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕реЗ рдЖрддрд╛ рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрдИ рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ... рдореИрдВ рд╕рд┐рд░реНрдл рдбреИрдкрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрджрд╕реВрд░рдд рдвреЗрд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ _good_ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдвреЗрд░ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рдореИрдВ рдЗрд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдФрд░ рдкреНрд░рднрд╛рд╡ рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

https://github.com/StackExchange/dapper-dot-net/blob/master/Dapper/SqlMapper.cs#L6 -L16

рд╣рдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ

рд╕рд╣реА рд╣реИ, рдФрд░ рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдПрдХ _good_ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдПрдкреАрдЖрдИ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЛ рд▓рдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдорджрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рдЬрдмрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ OOD рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреГрдердХреНрдХрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд (ISP) рдХрд╣рддрд╛ рд╣реИ рдХрд┐ _no рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХрд╛ рд╡рд╣ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛_ред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдЕрдореВрд░реНрддрди рдореЗрдВ рдирдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рддрдГ рд╣реА ISP рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ 'рд╕реЙрд▓рд┐рдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ' рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╣реИрдВ, рдФрд░ рдЖрдк рдмреАрд╕реАрдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП 'рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ' (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджреНрдзрд░рдг рдирд╣реАрдВ; рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЬрд╡рд╛рдмреА рддрд░реНрдХ)ред

6-7 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдореВрд░реНрдд рдореЗрдВ рдирдИ рдХреНрд╖рдорддрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреЗрд╢ рдХрд░реЗрдВред

рдЕрдЧрд░ рдпрд╣рд╛рдБ рдЕрдкрд╡реЛрдЯ рд╣реЛрддреЗ , рддреЛ рдореИрдВ рдЕрдкрд╡реЛрдЯ рдХрд░рддрд╛

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ @ploeh рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЯрд┐рдкреНрдкрдгреАред

@FransBouma , рд╣рдо DbDataReader.GetSchemaTable() рдХреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдЧрд╛ред
@NickCraver , SqlBulkCopy рд╣рдорд╛рд░реА рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИ рдФрд░ рд╣рдо рд╕реНрдХреАрдорд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╕реНрдХреАрдорд╛ рдкрд░ рдкреНрд░рдЧрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рдзреАрдореЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрдЯреИрдХ рдХреЛ рдПрдХреНрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдкреНрд░рдЧрддрд┐ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
@mythz , рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рднрд╛рд╡ рдкрд░ рдЙрджрд╛рд╣рд░рдг, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЙрдирдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗред

@YoungGah рдХреГрдкрдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпреЗ рдореБрджреНрджреЗ рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗрдВ, рдЬреИрд╕реЗ https://github.com/dotnet/corefx/issues/1039 , рдЕрдиреНрдпрдерд╛ рд╡рд┐рд░рд▓ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд┐рдЦрд░реА рд╣реБрдИ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк GetSchemaTable (рдФрд░ DbConnection рдХреЗ рд╕рдордХрдХреНрд╖, рдЙрд╕реЗ рди рднреВрд▓реЗрдВ!) рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ _рдЬрдм_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдХрдм рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛? рдЕрднреА рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рд╣реИ рдХрд┐ 'рднрд╡рд┐рд╖реНрдп' рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдмреЗрд╕ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

@FransBouma , рд╣рд╛рдБ, рдореИрдВ рдЕрдиреНрдп рдзрд╛рдЧреЗ рднреА рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдФрд░ рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдореИрдВ рдЙрд╕ рд╕реВрдЪреА рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рд╕реБрд╡рд┐рдзрд╛/рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ v1 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА, рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣рдЯрд╛рдИ рдЧрдИ, v1 рдХреЗ рдмрд╛рдж рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА, рдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд▓рдВрдмрд┐рдд рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдЧрд▓реЗ 2 рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛDbDataReader рдФрд░ DbConnection рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╕реНрдХреАрдорд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдЗрд╕реЗ rc2 рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рд╣реИред рдЕрдЧрд░ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдпреЛрдЬрдирд╛ рдмрджрд▓рддреА рд╣реИ, рддреЛ рд╣рдо рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

рдпрд╣рд╛рдВ рдХрднреА рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП @YoungGah; IDataReader рдХреА рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдЕрд▓рдЧ рдкрд░рдд рдорд╛рдирддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдиреАрддрд┐ рднрд╛рд░реА рд╣реИ, рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдиреАрддрд┐-рдореБрдХреНрдд рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдпрджрд┐ рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрднреА рдереЗ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ред

рдореИрдВ @ploeh рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╡реЛрдЯ @davkean рдХреА

рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреБрд░рд╛рдиреЗ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдкреБрд░рд╛рдиреЗ рдХреЛ рдЦрддреНрдо рдХрд░реЛред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдХрдо рд╕реЗ рдХрдо рддрдм рдЖрдк рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддреЗред

рдпрд╛ рдХрдИ рдЫреЛрдЯреЗ рдЗрдВрдЯрд░рдлреЗрд╕ред рдореБрдЭреЗ рдЕрднреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рдореВрд▓ .NET рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рдЕрд╡рд╕рд░ рд╣реИ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореВрд▓ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЪреЛрдЯ рдкрд╣реБрдВрдЪрд╛рдПрдВрдЧреЗред

рдЬрдм рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рдореВрд▓ 1.1 рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирдП рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдЗрдВрдЯрд░рдлреЗрд╕ред рдЙрдирдореЗрдВ рд╕реЗ рдФрд░ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ @ploeh рдиреЗ рдХрд╣рд╛ рдерд╛ред

рдЗрдВрдЯрд░рдлреЗрд╕ рд╣рд╛рдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╡рд┐рд░рд╛рд╕рдд рд╕рдорд░реНрдерди, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдмрд╣реБрдд рд░реБрдЪрд┐ рд╣реИред

рдпрд╣рд╛рдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рдЕрд╡рд╕рд░ рд╣реИ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореВрд▓ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЪреЛрдЯ рдкрд╣реБрдВрдЪрд╛рдПрдВрдЧреЗред

рддреЛ рдореВрд▓ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдФрд░ ADO.NET рдЬреИрд╕реЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкрд░ рдорд╛рдирдХреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рдореМрдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ? :рдЯреНрд░реЙрд▓ рдлрд╝реЗрд╕:

рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдПрдкреАрдЖрдИ рдпрд╛ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдПрдХ рдЪреБрдиреЗрдВред рдореБрдЭреЗ рдЖрдкрдХрд╛ рдХреЗрдХ рд░рдЦрдиреЗ рдФрд░ рдЙрд╕реЗ рдЦрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

@JamesNK рд▓реЗрдХрд┐рди рд╡рд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдмрд╛рдд рд╣реЛрдЧреАред рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЕрд╡рдзрд┐ред

рдЖрдк рдордЬрд╛рдХ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рдбрд┐рдЬрд╛рдЗрди рдПрдкреАрдЖрдИ рдЦрд░рд╛рдм рдереЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмреБрд░реА рддрд░рд╣ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдереЗ, рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рд╡реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдереЗред =) рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ NET рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХреБрдЫ рдирдпрд╛ рд╣реИред рдмрд╕ рдЗрд╕ рдмрд╛рд░ рдЪреАрдЬрд╝ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред

ADO.NET рд╕рднреА .NET рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рд╕реНрдерд┐рд░ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред 15 рд╕рд╛рд▓ рдореЗрдВ рдЗрд╕рдореЗрдВ рджреЛ рдпрд╛ рддреАрди рдЧрдВрднреАрд░ рдмрджрд▓рд╛рд╡ рд╣реБрдПред рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдПрдкреАрдЖрдИ рд╣реИред

рдПрдХ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд┐рд╖рдп рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рдП рдЧрдП рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдо рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ, рдЯреЗрд╕реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╕рд╛рдорд╛рди рдкрд░ рдПрдХ рд╣реА рд▓рдВрдмреА рдЪрд░реНрдЪрд╛ рдереАред

@nvivo рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБред рдЬрдм рд╣рдордиреЗ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдиреЗ рдЯреЗрд╕реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдереНрд░реЗрдб .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛрдб рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдирдпрд╛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ?

рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдЪреБрдирддреЗ рд╣реИрдВ (рдпрд╛ рддреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдпрд╛ рдЫреЛрдЯреЗ рдЗрдВрдЯрд░рдлреЗрд╕) рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ? рдореВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдирдП рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмреИрда рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рднреА рдирдП рддрд░реАрдХреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

@davkean

рдореИрдВ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ ADO.NET рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрд╛, рдЬрд┐рд╕реЗ рдирдП рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдореВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЗрд╕рдХреА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рдХреНрд▓реАрдирд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдкреАрдЖрдИ рд╣реЛрдирд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдореЙрдХ рдХрд░рдирд╛ рдФрд░ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдерд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдбреЗрдЯрд╛ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдирд╣реАрдВред

рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдмреЗрд╣рддрд░ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ @ploeh рдиреЗ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдХрд╣рд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд░рдХ рдХрд╛

рдЕрдм, рдмрд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреИрд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрд░рд╛рдм рдбрд┐рдЬрд╝рд╛рдЗрди рдмрдирд╛ рд░рд╣реА рд╣реИрдВ:

рдпреЗ рд╕рдм рдЖрд▓рдВрдХрд╛рд░рд┐рдХ рдкреНрд░рд╢реНрди рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрди рд╕рднреА рдХреЗ рдкрд╛рд╕ рд╕рдореНрдореЛрд╣рдХ рдЙрддреНрддрд░ рд╣реИрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╛рдЗрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдПрдкреАрдЖрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рд╣реИ , рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рд╢рд╛рдпрдж рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдбрд┐рдЬрд╛рдЗрди рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдЪрд▓рд╛ рдЧрдпрд╛:

  • рдЖрдЗрдП рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рд░рдЦреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЬрд╛рджреВрдЧрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ
  • рдЖрдЗрдП рд╕реНрдХреАрдорд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдИрдПрдл рд╣реИ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд╡рдзрд┐ред
  • рдЖрдЗрдП рдЗрди рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд░рдЦреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ .NET 1.1 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рд╣рдо рд╕рдВрдЧрддрддрд╛ рдХреЛ рдХрднреА рднреА рддреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ!
  • рдЖрдЗрдП рдбреЗрдЯрд╛рдЯреЗрдмрд▓реНрд╕ рдФрд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ .NET 1.1 рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдирд╛ рдкреВрд░рд╛ рдХреЛрдбрдмреЗрд╕ рд╡реИрд╕реЗ рднреА рдмрджрд▓ рджреЗрдВ!
  • рдЖрдЗрдП рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рд╕рдореБрджрд╛рдп, рдУрдкрди рд╕реЛрд░реНрд╕ рдФрд░ рдХрд▓ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рдирдпрд╛ рдкреНрд░рджрд╛рддрд╛ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ...
  • ... рдФрд░ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ _sole_ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ SqlClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд▓ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВ!
  • рдЖрдЗрдП рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рднреА рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ _everрдлрд┐рд░ рд╕реЗ_!
  • .. рддреЛ рдЪрд▓рд┐рдП рдлрд┐рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЙрдирдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ!

рд╣рд╛рдБ, рд╡рд╣рд╛рдБ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╢реЗрдЦрд╝реА рд╣реИ рдФрд░ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реА рд╣реИ =)... рд▓реЗрдХрд┐рди рдмрд╕ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реАрдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ 2015 рд╣реИ, рд╣рд░ рд╕рдордп рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдЕрднреНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ ASP.NET MVC рдореЗрдВ 20 рдЕрдкрдбреЗрдЯ рд╣реЛрдВрдЧреЗ рдЬреЛ ADO.NET рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВрдЧреЗред

рдореБрдЭреЗ рдЕрдм рднреА .NET рдкрд╕рдВрдж рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ .NET Core v1 рдХреЛ рд╕рдордп рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдореБрджрд╛рдп рдЗрд╕реЗ рдЕрдиреНрдп рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВред

ORM рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ

``` рд╕реА#

рдЕрдЧрд░ рдХреЛрд░рдПрдлрдПрдХреНрд╕

рдиреЗрдорд╕реНрдкреЗрд╕ рд╕рд┐рд╕реНрдЯрдоред рдбреЗрдЯрд╛ {
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдИрдбреАрдмреАрдХрдиреЗрдХреНрд╢рди {...}
}
```

рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирдП System.Data рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреИрдХреЗрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

It's 2015, everything breaks all the time and we're used to it. There will be 20 updates to ASP.NET MVC in the next years that will cause a lot more breaking changes than interface changes in ADO.NET.

I still love .NET and what you're doing with it in general, I'm sure it's a rush to get .NET Core v1 out in time and not everything will be perfect. I just hope the community can help steer this to other directions as the time goes and you're not afraid to break things as we move.
- nvivo

рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ; рдПрдХ рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдХреБрдЫ рдордирдорд╛рдиреА рд╕рдордп рд╕реАрдорд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдкреБрдирд░реНрд▓реЗрдЦрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдЬрд▓реНрдж рд╣реА рджреЗрд░ рд╣реЛ рдЪреБрдХреА рдереА, Q4/16 рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреБрдЫ рдЪрдордХрджрд╛рд░ рдирдП рдЯреВрдЯреЗ рд╣реБрдП рдмрдХрд╡рд╛рд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рдпрд╣ 2015 рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ рднрдпрд╛рдирдХ рдФрдЪрд┐рддреНрдп рд╣реИред

@thefringeninja рдЬреЛ рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЖрдзреЗ рд╕рд┐рд╕реНрдЯрдо (рд╕рд╛рдЭрд╛ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдирд╛рдо рдЯрдХрд░рд╛рд╡ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП extern alias рдХреЛ рдЕрдирдкрд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдФрд░ рдмрд╣реБрдд рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ a System.Data.IDbConnection рдЕрд▓рдЧ-рдЕрд▓рдЧ-рд▓реЗрдХрд┐рди-рд╕рдорд╛рди System.Data.IDbConnection рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЖрдк рдЗрд╕реЗ рдкреЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ 10 рдЧреБрдирд╛ рдмрджрддрд░ рдмрдирд╛ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг @mgravell рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк Type.GetType("System.Data.IDbConnection, System.Data") , рдпрд╛ рд╢рд╛рдпрдж рдкреАрд╕реАрдПрд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреИрд╕реЗ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ orm A System.Data.IDbConnection рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ orm B рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
System.Data.IDbConnection, рддреЛ рдЕрдм рджреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ рдФрд░
рдЕрд╕рдВрдЧрдд рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди рдирд╛рдо/рдирд╛рдорд╕реНрдерд╛рди, рд╡рд┐рд░реЛрдз, рдФрд░
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдбреАрдмреА рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рднреА рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ,
рдореВрд▓ рд░реВрдк рд╕реЗред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░: рдпрд╣ рдЕрдиреБрдкрдпреЛрдЧреА рдПрдкреАрдЖрдИ рдХреЛ рдкрдЯреНрдЯреЗ рдкрд░ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХреЛрдИ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ
рдПрдХ SqlConnection рдпрд╛ NgpSqlConnection рдореЗрдВ - рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреИрдХреЗрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ System.Data.Common рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ DbConnection рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ : рдЖрдк рд╢рд╛рдпрдж рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред

рдЖрдкрдХреЛ рд╣рд░ рдУрдЖрд░рдПрдо рдпрд╛ рдПрдбреАрдУ .NET рдкреНрд░рджрд╛рддрд╛ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рддреГрддреАрдп рдкрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ (рдХрд╛рдлреА рдЧрд╛рд░рдВрдЯреА SQL рд╕рд░реНрд╡рд░ рдЕрднреНрдпрд╕реНрдд) рдкрд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдФрд░ рдПрдХ рдХреЛрд░ рдмреАрд╕реАрдПрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ 2 рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдИ-рд▓реЗрд╡рд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЬреИрд╕реЗ рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ) рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрджрддрд░ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреЛрд░ рд▓рд┐рдмрд╛рд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ (рдЬрд┐рд╕реЗ рдЕрдм рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА) рдЕрдм рдХрд┐рд╕реА рднреА рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдЬреЛ рдирд╣реАрдВ -рдПрдХ рд╣реЛрдЧрд╛ рдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЬреЛ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

@mgravell рдЖрд╣ рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛, рдЙрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред :+1:

рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЙрд╕ рдХреЛрдб рд╕реЗ рдХрд╕рдХрд░ рдЬреЛрдбрд╝ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ! рдЗрд╕реЗ рд▓рдкреЗрдЯреЛ рдФрд░ рдЗрд╕реЗ рджреВрд░ рдХрд░реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдХрдИ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдКрдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдПрдХреАрдХрд░рдг рдЙрди рдмрд┐рдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмреАрд╕реАрдПрд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдордЬрд╝рд╛рдХ рдирд╣реАрдВ рдЙрдбрд╝рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП! рдЕрдЧрд░ рдЖрдк рд╣реИрдВ рддреЛ рдЖрдкрдХрд╛ рдбрд┐рдЬрд╛рдЗрди рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

@nvivo рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдореВрд▓ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рджрд┐рд╢рд╛ рдЕрдм рд╕рдВрдЧрдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ v1 рдпреБрдЧ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрддреНрд░ рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдЙрд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦреЗрдВ - рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдирдП рдореБрджреНрджреЗ рджрд░реНрдЬ рдХрд░реЗрдВред

@mythz рджреЛ рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдереЗ; 1) рд╡реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдПрдХ (рднрд╛рд░реА) рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдП, рдЬреЛ рдиреАрддрд┐-рдореБрдХреНрдд рд╕рд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ 2) рд╡реЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрдд рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗрдЯ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди v1 рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реИрдВред рд╣рдо рдЙрд╕ рднреНрд░рдо рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ - рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдореВрд▓ рд╕рд╛рд░ рддрддреНрд╡реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдореВрд▓ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рджрд┐рд╢рд╛ рдЕрдм рд╕рдВрдЧрдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ v1 рдпреБрдЧ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрддреНрд░ рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдЙрд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦреЗрдВ - рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдирдП рдореБрджреНрджреЗ рджрд░реНрдЬ рдХрд░реЗрдВред

рдЗрд╕рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

@nvivo рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдк рдЗрд╕реЗ рджрд╛рдпрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИрдВ - рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдореБрджреНрджрд╛ System.Data рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рддрд╛рдХрд┐ рдкреВрд░реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ:

рдпрд╣ 2015 рд╣реИ, рд╣рд░ рд╕рдордп рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдЕрднреНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдордореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрддреЛрд╖рдЬрдирдХ рд░рдгрдиреАрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдХреЛрдб-рдЖрдзрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА .NET рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреАрд╕реАрдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рдгрдиреАрддрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдордореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрддреЛрд╖рдЬрдирдХ рд░рдгрдиреАрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ

@mythz рдпрд╣ рд╕рдВрджрд░реНрдн рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдореЗрд░рд╛ рдпреЗ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ред рдпрд╣рд╛рдВ рд╕рднреА рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдореЗрдВ .NET рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╡рд╛рдЧрдВрддреБрдХ рд╣реИред

рдЗрд╕ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдЬреЛ рдореБрджреНрджрд╛ рдмрджрд▓ рдЧрдпрд╛, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЦрд╛рд╕ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред .NET Core рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ, рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореМрдЬреВрджрд╛ рдкреВрд░реНрдг .NET API рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реЛрдВрдЧреЗред рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред

@nvivo рдпрд╣ рд╕рдЯреАрдХ рднрд╛рд╡рдирд╛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдк рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдХрднреА рднреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рд░реНрдердХ рдХреЛрдб-рдмреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдЖрдк CoreCLR рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рднреА рдирд╣реАрдВ рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВред рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрджрд┐ рдЖрдк рдКрдкрд░ рдкрдврд╝рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреЛрд░рд╕реАрдПрд▓рдЖрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рдирд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реИред CoreCLR рдПрдХ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓рдХреНрд╖реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореМрдЬреВрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЗрд╕рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ .NET рдЯреАрдо рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рдЬреЛ рдпреЗ рд▓рд╛рдкрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рдзрд╛ рдмрди рд░рд╣реЗ рд╣реИрдВред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рд╕рдм рдмрд╛рддреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдкрд░ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рд╣рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рджреВрд░ рдХрд░рддреА рд╣реИред

рдореБрдЭреЗ _policy-free_ рдЕрдмрд╛рд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗ рдЬреЛ рдорддрд▓рдм рд╣реИ, рдЙрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред

рдореВрд▓ рд░реВрдк рд╕реЗ, рдкреЙрд▓рд┐рд╕реА-рдлреНрд░реА рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ System.Data.Common рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдореЗрдВ рд▓рдЧрднрдЧ рд╢реВрдиреНрдп рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рд╣реЛрддреЗ рд╣реИрдВ - рд╡реЗ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рдЖрдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рдФрд░ рдХреЛрдб рд╣реИрдВред рдиреАрддрд┐-рдореБрдХреНрдд рдкреНрд░рдХрд╛рд░, рдЙрдирдХреЗ рдмрд╣реБрдд рд╣реА рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░рдг, рдиреАрддрд┐ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдмрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдо рдмрдЧ рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдмрдбрд╝реЗ рдкреИрдХреЗрдЬ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмреАрдЪ _exchanged_[1] рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ [2] рдЕрдореВрд░реНрдд рдФрд░ рдкреНрд░рдХрд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдпрд╛ рдЗрд▓рдорд░реНрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЧреИрд░-рд╡рд┐рдирд┐рдордп рдкреНрд░рдХрд╛рд░ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

[рез] _exchanged_ рд╕реЗ, рдореЗрд░рд╛ рдорддрд▓рдм рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╣реИ рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо Collection<T> рдПрдХ рд╡рд┐рдирд┐рдордп рдкреНрд░рдХрд╛рд░ рдорд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди List<T> ред
[реи] рдЗрдирдХреЗ рд▓рд┐рдП рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдЯрд╛рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдКрдкрд░ рдХреЗ рд╕рдорд╛рди рдмреНрд░реЗрдХ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ "рдХрд╛рдВрдЯрд╛" рдХрд░рддреЗ рд╣реИрдВ; рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдирд╛ рд╣реИред

@mythz рдореБрдЭреЗ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдРрдк рдФрд░ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ

рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░реЗрдВ ... рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рдеред

рдУрд╣? рдХреИрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ IDataReader рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ IDbConnection рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ? рдпрд╛ рдЖрдИрдбреАрдмреА рдЯреНрд░рд╛рдВрдЬрд╝реЗрдХреНрд╢рди? рдЖрдк рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ #ifdev рдХреИрд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдкрдХрд╛ _customers_ рдХреЛрдб рдЙрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?

'рдЗрд╕рд╕реЗ тАЛтАЛрдирд┐рдкрдЯреЛ'... рдпрд╣ рдХреИрд╕рд╛ рдЕрд╣рдВрдХрд╛рд░ рд╣реИ?

рд╕рд░рд▓, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреИрдХреЗрдЬ (рдЖрдкрдХрд╛ рд╕рдВрдЧрдарди) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк .net рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рдБ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рд╣рд░ рд╕рдордп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ) рдиреЗ рдЙрд╕ рд╕рдордп рдПрдХ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ (рд╡рд╛рдкрд╕ .net 2.0 рдореЗрдВ)ред рдХреНрдпрд╛ рдХреЛрдИ рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдП.. рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдирдП рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдлреИрдВрд╕реА рдпреВрдЖрдИ рдореЗрдВ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд╛рдЯ рджрд┐рдпрд╛ рд╣реИ .. рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдирдП рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@FransBouma рд╡рд╣ рд╢рд╛рдпрдж рдХреЛрдИ рд╣реИ рдЬреЛ рдордЬрдмреВрдд рдирд╛рдордХрд░рдг рдХреА рднреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реИред

@FransBouma @ phillip-haydon рдЖрдкрдХреА рдЯреНрд░реЛрд▓рд┐рдВрдЧ рдХреЛ рджреВрд╕рд░реА рдЬрдЧрд╣реЛрдВ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реЛрдЧ рдЖрдкрдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдВрджреЗрд╣ рд╣реИ рддреЛ рдореЗрд░реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдпреЛрдЧрджрд╛рди / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ ... рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ ... рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ ...

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдореИрдВ рдордЬрдмреВрдд рдирд╛рдордХрд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВред

рд╣рд╛рд▓рдд рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░реЛ...

рдФрд░ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЯреНрд░реЛрд▓рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

" @FransBouma рд╡рд╣ рд╢рд╛рдпрдж рдХреЛрдИ рд╣реИ рдЬреЛ рдордЬрдмреВрдд рдирд╛рдордХрд░рдг рдХреА рднреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реИред" рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд╣реИ, рдФрд░ рдЗрд╕ рд╡рд╛рд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рдБ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдкрдХреА рдЯреНрд░реЛрд▓рд┐рдВрдЧ..

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдмреА * рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ .NET 2.0 рдореЗрдВ ADO.NET рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рдЙрдиреНрд╣реЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХреБрдЫ рднреА рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред App.config рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд░реНрдерди рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдмрд╣реБрдд рдЕрдкреНрд░рдЪрд▓рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд░рд╣реЗрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рд░рд▓, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреИрдХреЗрдЬ (рдЖрдкрдХрд╛ рд╕рдВрдЧрдарди) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк .net рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдЬрд╛рд░реЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ рдФрд░ .net 1.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ 'рд╕рд░рд▓' рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рд┐рд░реНрдл рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдпрд╣реА рдХрд░рдирд╛ рд╣реИ: рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдмреЛрдЭ рд╣реЛрдЧрд╛ред

рд╣рд╛рдБ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рд╣рд░ рд╕рдордп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ) рдиреЗ рдЙрд╕ рд╕рдордп рдПрдХ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ (рд╡рд╛рдкрд╕ .net 2.0 рдореЗрдВ)ред рдХреНрдпрд╛ рдХреЛрдИ рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдП.. рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдирдП рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдлреИрдВрд╕реА рдпреВрдЖрдИ рдореЗрдВ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд╛рдЯ рджрд┐рдпрд╛ рд╣реИ .. рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдирдП рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣реА рдмрд╛рдд рд╣реИ: рдЗрд╕реЗ 'рдирдП рд░рдирдЯрд╛рдЗрдо' рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐ Microsoft рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ CoreFX рд▓рдХреНрд╖реНрдпреАрдХрд░рдг dll рдХреЛ .NET рдкреВрд░реНрдг рдкрд░ рднреА рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ рд╣реИред .NET рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде CoreFX рдореЗрдВ рдирд╣реАрдВ (рдЗрд╕рд▓рд┐рдП рдЖрдЬ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ) рдмрд╣реБрдд рд╕рд╛рд░реЗ 'рдордЬрд╝реЗ' рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ 2 рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдП рд░рдЦрдиреЗ рд╣реЛрдВрдЧреЗред реи рдпрд╛ рей #ifdevs рдирд╣реАрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХрдИред рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрди рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдмрджрд▓рдиреЗ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдкрдбрд╝рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдХреЙрдореНрдкреИрдХреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдорд░реНрдерди рдХреЛрдИ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рддреЛ рдкреВрд░реНрдг .net рдФрд░ CoreCLR рдкрд░ рдУрдЖрд░рдПрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдПрдХ рднрдпрд╛рдирдХ рд╕рдордп рд╕рд┐рдВрдХ рд╣реЛрдЧрд╛, рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрдЧреА рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрдЧрд╛: рдЖрдкрдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреА, рдЖрдк рдХреЗрд╡рд▓ _absence_ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ .

(рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдХреЛрдИ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗ: "рд▓реЗрдХрд┐рди рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВрдЧреЗ": рд╣рдорд╛рд░рд╛ рд╕рд╛рдорд╛рди рдореЛрдиреЛ рдкрд░ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рддреЛ рдирд╣реАрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдерд╛)ред

рд╕реЗрд▓рдореАрдерд┐рд╕рдлреНрд░реЗрдорд╡рд░реНрдХред рдУрд╣, рдореИрдВ рднреА рдХреНрдпреЛрдВ рдкрд░реЗрд╢рд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реВрдБред

рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХреБрдЫ рднреА рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ

_cough_ рд▓рд┐рдВрдХ-рдЯреВ-рдПрд╕рдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ _cough_

рдЬреИрд╕рд╛ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдЧреИрд░-рдПрдордПрд╕ рдУрдЖрд░рдПрдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣реИред рдбреИрдкрд░ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛
рдмреБрд▓реЗрдЯ рдФрд░ рдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд╣реЛ рдЧрдпрд╛ред рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рд╕рдордп рд╣реЛрддрд╛, рддреЛ рдореИрдВ
рдЬрдм рд╡реЗ рдХреБрдЫ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдордПрд╕ [рдЕрдкреНрд░рдЪрд▓рд┐рдд] рдХрд╛ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗред рдкрд░рдВрддреБ:
рд╣рдо рдЕрддреАрдд рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗред

рдпрд╣ _is_ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рджрд░реНрджрдирд╛рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдПрдХ рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рди
net40 рдЖрджрд┐, рдФрд░ DNS рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛)ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЧреЙрдбрдлреБрд▓ рдореЗрд╕ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛
рд╡рд╣ рдбреИрдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ

рдЕрдЧрд░ред

27 рдирд╡рдВрдмрд░ 2015 20:07 рдХреЛ, "рдирддрди рд╡реАрд╡реЛ" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдмреА*
рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ .NET 2.0 рдореЗрдВ ADO.NET рдХреЗ рд▓рд┐рдП API рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдЬрдм рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рдЙрдиреНрд╣реЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди
рдЙрд╕ рд╕рдордп рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХреБрдЫ рднреА рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
App.config рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд░реНрдерди рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рд╣реИ, рддреЛ рдЖрдк a . рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдмрд╣реБрдд рдЕрдкреНрд░рдЪрд▓рд┐рдд рдПрдкреАрдЖрдИ рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ
рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд░рд╣реЗрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/corefx/issues/3480#issuecomment -160198453ред

рдореИрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реВрдВ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрд╛ред рдЖрдк async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рдереЗред IAsyncDbCommand , IAsyncDataReader рдЖрджрд┐ред рдлрд┐рд░ рдЖрдк рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

ADO.NET рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рддреЛ async рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдХрд╛ рдирд╣реАрдВред рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд╣ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИ? рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдкреЗрд╢ рдХрд░реЗрдВред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд┐рд░реНрдл рдПрдХ рджрд░реНрдж рд╣реИред

рдХреНрдпрд╛ рдореИрдВ рдпрд╣рд╛рдБ рд╕реВрддреНрд░ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?

.NET рдбреЗрдЯрд╛ рдЯреВрд▓рд┐рдВрдЧ рдкрд░ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрд╡реАрдХреГрдд рд╕рдореБрджрд╛рдп рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ,
рдХрдИ рдУрдЖрд░рдПрдо рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕рд╣рд┐рдд рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ - рдХрд╛рдлреА
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ - рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛
рд╣рдо рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рд╕реЗ рдЕрдирднрд┐рдЬреНрдЮ рд╣реИ, рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рднреЛрд▓реЗ рд╣реИрдВ
рд╕рд┐рджреНрдзрд╛рдВрдд, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпрджрд┐ рд╣рдо рд╕рднреА рдкрд┐рдЫрд▓реА рдХрд╣рд╛рдиреА рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ,
рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрд╕ рд╕рдордп рд╡рд╣рд╛рдВ рдереЗред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ "рдпрд╣ рд╣рдореЗрдВ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдИрдПрдл рдЦреБрд╢ рд╣реИ"ред
рд╣рд╛рдБ, рд╣рдо рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдгрдп рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдареАрдХ рд╣реИ, рд╣рдо рд╕рднреА рдиреЗ рдЕрдкрдиреА рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХреА рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдлрд▓рджрд╛рдпреА рди рд╣реЛред
27 рдирд╡рдВрдмрд░ 2015 рдХреЛ 20:41 рдкрд░, "рдЬреЛрдирд╛рд╕ рдЧреМрдлрд┐рди" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реВрдВ рдХрд┐ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ a . рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдоред рдЖрдк рдХреЗ рд▓рд┐рдП _new_ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рдереЗ
рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпрд╛рдБред IAsyncDbCommand, IAsyncDataReader рдЖрджрд┐ред рддрдм рдЖрдк рдХрд░ рд╕рдХрддреЗ рдереЗ
рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

ADO.NET рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рддреЛ async рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рд╕рдВрд╕реНрдХрд░рдг, рджреЛрдиреЛрдВ рдирд╣реАрдВред рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░
рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╣реА рд░рд╣рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╡рд╣ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИ? рдирдпрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВ
рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд┐рд░реНрдл рдПрдХ рджрд░реНрдж рд╣реИред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/corefx/issues/3480#issuecomment -160201361ред

рджреЛрд╕реНрддреЛрдВ .. рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЯрдХреНрдХрд░ рджреЗрдВред рдХрд┐рдпрд╛ рд╣реБрдЖред

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреБрдЫ рдкреАрд╕реАрдПрд▓ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЛ рдпрд╣ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреЛрд░ рдбреЙрдЯ рдиреЗрдЯ рдлреБрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ .. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЛ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдЬрд╣рд╛рдВ рдмрд╣реБрдд рдЕрд╕рдВрдЧрдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ рдФрд░ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕рд╛ рдЪреБрдирдирд╛ рд╣реИ .. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдПрд╕рд┐рдВрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реИред рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ async рд╣реЛрддрд╛ ..

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡реЗ рд╣реИрдВ ... рдФрд░ 4.6.2 рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛

@mgravell +100ред рд╕рд╣реА рдХрд╣рд╛, 100% рд╕рд╣рдорддред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИ? рд╣рдо рдпрд╣рд╛рдВ coreclr рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? .NET рдбреЗрд╕реНрдХрдЯреЙрдк рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ coreclr рдкрдХрдбрд╝ рдореЗрдВ рдирд╣реАрдВ рдЖ рдЬрд╛рддрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ? рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рд╣реИред

@leppie рджрд░рдЕрд╕рд▓, рдпрд╣ рдХрдИ рд╕рд╛рд▓реЛрдВ рддрдХ рд░рд╣реЗрдЧрд╛ред рдФрд░ рд╣рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЗрди рд╣реИрдХреНрд╕ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рд╡рд┐рд╡рд╛рдж рдХрд╛ рд╡рд┐рд╖рдп рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдкреБрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред рдЙрд╕ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рдмреАрд╕реАрдПрд▓ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рд╕реЗ "рдпрд╣ рдорд╛рдореВрд▓реА рд╣реИ, рдЖрдЧреЗ рдмрдврд╝реЗрдВ" рд░рд╡реИрдпрд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред

рдЖрдЗрдП рдпрд╣рд╛рдВ рдХреБрдВрдж рд╣реЛрдВ: рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рдмреАрд╕реАрдПрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдмрд╣рд╕ рдпрд╣ рд╣реИ рдХрд┐ "рдпрд╣ рдХреНрдпрд╛ рд░реВрдк рд▓реЗрддрд╛ рд╣реИ?"

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рдЕрдм рдирдП рдкреИрдХреЗрдЬрд┐рдВрдЧ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ _additional_ рд╡рд░реНрдЬрдирд┐рдВрдЧ рддрдВрддреНрд░ рд╣реИ: рдПрдХреНрд╕, рд╡рд╛рдИ рдФрд░ рдЬреЗрдб рдореЗрдВ рдХреМрди рд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЕрдм рдЯреВрд▓рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдмреЗрд╣рддрд░ рд╣реИред рдЬреИрд╕реЗ dotnet5.2 рдмрдирд╛рдо 5.4 рд╡рд░реНрддрдорд╛рди рдореЗрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡рд╣рд╛рдВ рднреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП SqlClient рдЕрднреА рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдЬ рднреА рдЦрдбрд╝рд╛ рд╣реИ (рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо # 14302 рдФрд░ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо # 15269) рджреЗрдЦреЗрдВ, рдФрд░ рдЬреЛ рджрд┐рдпрд╛ @YoungGah рдиреЗ рдХрд╣рд╛ (рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЧрд▓рдд

рддреЛ 5.6 (1.5) рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдЕрдзрд┐рдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдЧрддрд┐рдорд╛рди рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рддрд╛рд▓рдореЗрд▓ рд░рдЦрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд╢реАрд▓ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ? рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╣рдореЗрдВ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдордВрдЪ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдкрд░ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ 100% рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛ рдирд╣реАрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рд╣реИ: рдХреМрди рд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рд╡рд┐рдзрд┐рдпрд╛рдБ рдЖрджрд┐ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг _рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо_ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рджрд░реНрдж рдмрд┐рдВрджреБ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╡рд╣ рдЪрд┐рдВрддрд╛ рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рдЕрд░реНрдз-рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЦреЗрд▓ рдореЗрдВ рд╣реИред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдЕрдЧрд▓реЗ 2 рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░рд╛ рдбрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреВрд░реЗ рд╕рдордп рд╕рдВрджреЗрд╢ рд░рд╣рд╛ рд╣реИ: "рд╣рдо рдПрдХреНрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдФрд░ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ" - рдЙрди рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреА рдУрд░ рд╕реЗ, рдореЗрд░реЗ рд▓рд┐рдП, рдЗрди рдореЛрд░реНрдЪреЛрдВ рдкрд░ рдорд╣реАрдиреЛрдВ рд╕реЗ рдкреНрд░рдЧрддрд┐ (рдХреЛрдб рдФрд░ рдЪрд░реНрдЪрд╛ рджреЛрдиреЛрдВ рдореЗрдВ) рдХреА рдХрдореА рд░рд╣реА рд╣реИред

100% рд╕рд╣рдорддред

рдЬрдм рдореИрдВрдиреЗ SqlFu (рдореЗрд░рд╛ рдорд╛рдЗрдХреНрд░реЛ ORM) рдХрд╛ v2 (рдФрд░ рдКрдкрд░) рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╣ рддрдп рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдБ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╣реИ: DbConnection/DbCommand рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдПред рдореИрдВрдиреЗ рдпрд╣ рдкрд╛рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ IDataReader рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдордПрд╕ рдиреЗ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреМрди рд╕рд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрджрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд╕рдорд░реНрдкрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдиреЗ рдХрд╛ рдореВрд▓реНрдп рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рд░рдЦрдирд╛/рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЕрдЧрд░ рд╡реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рдареАрдХ рд╣реИ! рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдХрдо рд╕реЗ рдХрдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд╣реАрдВ рдЬреВрдЭрдирд╛ рдкрдбрд╝реЗрдЧрд╛ред

(рдпрд╣ рдпреВрдПрд╕ рдореЗрдВ рдереИрдВрдХреНрд╕рдЧрд┐рд╡рд┐рдВрдЧ рд╡реАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП Microsoft рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рддрдм рддрдХ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реЛрдВрдЧреА рдЬрдм рддрдХ рд╡реЗ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рдЬрд╛рддреЗ)

рдмрд╕ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддрд╛рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛рд╡/рдмрдЧ рди рдЦреЛрдПрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ/рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдФрд░/рдпрд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рд╕рдВрд╕реНрдХрд░рдг рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдХреЗрд╡рд▓ v1 рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реА рд░рд╣рдиреЗ рджреЗрдВред

@NickCraver .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг-рд╕реЗ-рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рдорд╛рди, .NET рдХреЛрд░ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рд░ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдЬреЛ _рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@davkean рдЖрдк рдХрд┐рддрдиреЗ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдПрдХ рдЕрдзреВрд░рд╛ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрджрд▓реЗрдЧрд╛, рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рд▓рд╛рдкрддрд╛ рдЯреБрдХрдбрд╝реЗ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдВрдЧреЗ рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ _more_ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рднреА рдорд╛рди рд▓реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрд░рдЯреАрдПрдо рд╣рд┐рдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрд░рдорд╢рдГ 25 рд╕рд┐рддрдВрдмрд░ рдФрд░ 2 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#14302 рдФрд░ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#15269 рджреЗрдЦреЗрдВ - рдЙрд╕рдХреЗ рдмрд╛рдж рдХрдИ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдорд╛рдВрдЧрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрджред рдпрд╛рдиреА 2 рдорд╣реАрдиреЗ рдФрд░ 2 рд░рд┐рд▓реАрдЬрд╝ рдЬреЛ рдЪрд▓ рдЪреБрдХреА рд╣реИрдВ, рдЪреБрдкреНрдкреА рдХреЗ рд╕рд╛рдеред рдпрд╣ рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рдореБрджреНрджрд╛ рд╣реЛрдиреЗ

рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╣рдо рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдбреЗрдЯрд╛ рдХреЙрдорди рдЯреАрдо рдЕрдореВрд░реНрдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред

@NickCraver рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рдо рдпрд╣рд╛рдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рднреБрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, @YoungGah рдиреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдКрдкрд░ рдПрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╡рд╣ рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗред рдмрд╣реБрдд рд╕рд╛рд░реЗ MS рдЕрднреА рднреА _рдЦреБрд▓реА рдЪреАрдЬрд╝ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреНрдпрд╕реНрдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рдЬрд╛рдПрдЧрд╛ - рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@niemyjski

dnx рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдврд╛рдВрдЪрд╛/рд░рдирдЯрд╛рдЗрдо рд╣реИ

рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреАрдПрдирдПрдХреНрд╕ рд░рдирдЯрд╛рдЗрдо рдФрд░ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрддрд▓реА рд╣рд╡рд╛ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реБрдП рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХ рд░рд╣реЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ CoreFx рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреВрд░реНрдг .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ рд╕реБрд░рд╛рдЧ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдирд╣реАрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░реЗрдВ ... рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рдеред

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЬрд╣рдордд рдЙрдард╛рдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ a) рдЗрд╕рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдФрд░ b) рдпрд╣ рдХреЛрд░ BCL рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрдЯреА-рдлреВрдЯреА рд░рдгрдиреАрддрд┐ рд╣реИред

@nvivo

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдмреА * рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ .NET 2.0 рдореЗрдВ ADO.NET рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред

рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рддреЛ рдЖрдк рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдЦреЛрд▓рддреЗ рдереЗред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ [Obsolete] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдЕрдм рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреИрд░-рдПрдордПрд╕ .NET рдУрдЖрд░рдПрдо рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдПрдХ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЦрд░рд╛рдм рд╕рдВрдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреАред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдмрд╣реБрдд рдЕрдкреНрд░рдЪрд▓рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд░рд╣реЗрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдЭреВрдард╛ рд╕реНрдЯреНрд░реЙрдореИрди - рдПрдХ рдХрд╛ рдорддрд▓рдм рджреВрд╕рд░реЗ рд╕реЗ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА async API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдирд╣реАрдВ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореМрдЬреВрджрд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб-рдЖрдзрд╛рд░ рдирд╣реАрдВ рдЯреВрдЯреЗ рдФрд░ рди рд╣реА рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ API рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдИред

рдареАрдХ рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рд╛рдл рд╢реБрд░реБрдЖрдд рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ: рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЕрддреАрдд рдХреА рдХреМрди рд╕реА рднрдпрд╛рд╡рд╣рддрд╛рдПрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХреА рдЧрдИ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдорд╛рдЗрдХреНрд░реЛрдУрдЖрд░рдПрдо рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдирд╛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реЛрдЧреА, рд╡реЗ рдиреЗрдЯ рдХреЛрдб рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдмрдирд╛рддреЗ рд╣реИрдВ (рдИрдПрдл рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреЛрдЧреА рдЬрд╛рдирд╡рд░ рд╣реИ рдЬрд╣рд╛рдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 500ms рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ)ред

рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдо рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП: рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рддрдм рддрдХ рдорд╣рд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЬреЛ рдХреБрдЫ рднреА рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рдЪреБрд░ рдЙрдкрдпреЛрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдХреНрд╕рдПрдордПрд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐: рдЗрдВрдЯрд░рдСрдк)ред рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред WCF рдЙрджрд╛рд╣рд░рдг рдореЗрдВ SOLID рдореЗрдВ S рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрдбрд╝реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рд╣реЛред

рддреЛ: рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╣рдо рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдбреЗрдЯрд╛ рдХреЙрдорди рдЯреАрдо рдЕрдореВрд░реНрдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред

@davkean рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред ADO.NET рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреГрддреАрдп рдкрдХреНрд╖ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╣реИ, рдЬреЛ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИред рдЪреАрдЬреЗрдВ рдмрджрд▓рддреА рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕-рднреВрдорд┐ рдореЗрдВ рднреА, рдФрд░ рдЗрди рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рдВрдЪрд╛рд░ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рддрд░рдВрдЧрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛: рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди _is_ рднреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдФрд░ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ ADO.NET (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдореЗрдВ рднреА рджреЗрдЦрд╛ рд╣реИред

рд╕рдВрдкреВрд░реНрдг ADO.NET API рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ SQL рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ; рдРрд╕рд╛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╣реБрдЖ рд╣реЛ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ SQL рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдИ рдирд╣реАрдВ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрд╕рдХреНрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдкреАрдЖрдИ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред

рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдХрд┐, рд╢реБрд░реБрдЖрдд рдореЗрдВ .NET 1.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдЬрд╛рдЗрди рдерд╛ (рдЬреЛ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╕рд╛рдмрд┐рдд рд╣реБрдЖ) рдФрд░ рддрдм рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдкрд░рд┐рджреГрд╢реНрдпред рдЙрдирдореЗрдВ рд╕реЗ _рдЕрдзрд┐рдХрд╛рдВрд╢_ рдЕрднреА рднреА рдПрдкреАрдЖрдИ рдореЗрдВ рд╣реИрдВ (рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ рд╣реИрдВ)ред рдФрд░ рдЕрдм рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛: рдЗрдВрдЯрд░рдлреЗрд╕ред

рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╣рдЯрд╛рдХрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ _nothing_ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ: рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣рд╛рдВ рд╡рд╛рдкрд╕ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рдкрд░ рд╕рдордп рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдХреЛрдб рдЬреЛ рдПрдкреАрдЖрдИ _will_ рдХреЗ рдЙрд╕ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕ рд╕рд╛рд░реЗ рдкрдиреАрд░ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рдмрд┐рдВрджреБ 'рд╢реБрд░реВ рдХрд░рдирд╛' рд╣реИ, рддреЛ рд╣рд░ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЛ рдирдпрд╛ рд╕реНрд╡рд░реВрдк рджреЗрдХрд░ рдХрд░реЗрдВ, _all_ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ рдЬреЛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдвреЗрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ .

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВ, рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВред рд╣рдо рдпрд╣ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдПрдордПрд╕ рдХреЗ рднреАрддрд░ рдПрдХ рдЯреАрдо рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмреБрд░реА рддрд░рд╣ рдЖрд╣рдд рд╣реЛрддреА, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХрднреА рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ред

рдпрджрд┐ Microsoft рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рддреГрддреАрдп рдкрдХреНрд╖ рдкреНрд░рджрд╛рддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ 'рдПрдХ рд░реВрдк' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ Async рдХреЗ рд╕рд╛рде, рдЬрд╣рд╛рдВ async рд╡рд┐рдзрд┐ рд╡рд╛рдкрд╕ рд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рдкрд░ рдЖрддреА рд╣реИ рдпрджрд┐ рдкреНрд░рджрд╛рддрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рдмрдврд╝рд┐рдпрд╛: рд╡рд╣ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдУрдЖрд░рдПрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИрдВ (рдФрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ: рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ (рдорд╛рдЗрдХреНрд░реЛ) рдУрдЖрд░рдПрдо рдХреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ _your_ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ) рдмрд╕ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣ рдпрд╣ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Microsoft рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рдиреЗ рднреА Oracle рдпрд╛ PostgreSql рдХреЛ ADO.NET рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдХрднреА рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП UDTs рдХрд╛ рдЙрдкрдпреЛрдЧ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреНрд░реА, рдХрд░реНрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдкрд░рд┐рдгрд╛рдо, рдкреНрд░рддреНрдпреЗрдХ ADO.NET рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ (рдХрдм?) SQL рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреНрд░реА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ JSON рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдХреНрдпрд╛ ADO.NET рдХреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдЕрддреАрдд рдореЗрдВ ADO.NET рдкреНрд░рджрд╛рддрд╛рдУрдВ рд╕реЗ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИ?

рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рдпрд╣ рдмрддрд╛рдирд╛ рдирд╛рд╕рдордЭреА рд╣реИ рдХрд┐ MS рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝реЗрдЧрд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЙрдиреНрд╣реЗрдВ рднреА рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ: рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рд░ рдПрдкреАрдЖрдИ рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ ADO.NET рдЙрдирдореЗрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ; рдХрд┐рд╕реА рди рдХрд┐рд╕реА рджрд┐рди рдХреЛрдИ рди рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ 'рдареАрдХ' рдХрд░ рджреЗрдЧрд╛ред

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЗрдВрдЯрд░рдлреЗрд╕ ADO.NET рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рдПрдкреАрдЖрдИ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╣рд┐рд╕реНрд╕реЗ ADO.NET рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдПрдкреАрдЖрдИ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рди рд╣реА рдПрдкреАрдЖрдИ рдХреЛ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рдЧрдИ рд╣реИ: рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреБрдЫ рддрддреНрд╡реЛрдВ рдЬреИрд╕реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ/рдЯреЗрдмрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрдиреНрд╣реЗрдВ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдФрд░ рд╡рд╣рд╛рдВ рдЕрдиреНрдп рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реА рддрд░рд╣ рдХреА рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рд╕рд┐рд╡рд╛рдп ... рдЗрдВрдЯрд░рдлреЗрд╕ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВред

рдХреЗрд╡рд▓ рдЙрд╕ рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЗрд╕рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред

@mythz

рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реБрдП рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдЦреЛрд▓рддреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рдереЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рдЖрдк рд╕рдВрднрд╡рддрдГ рдУрдкреА рдХреЛ рдкрдврд╝ рдФрд░ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддреЗред рдпреЗ рдЪрд░реНрдЪрд╛рдПрдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзрд╛рд░реНрдорд┐рдХ рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИрдВ рдФрд░ рдЖрдк рдХреЗрд╡рд▓ рдРрд╕реА рдмрд╛рддреЗрдВ рдорд╛рди рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдиреЗ рдирд╣реАрдВ рдХрд╣реАред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдмреЗрд╣рддрд░ рд╣реИрдВред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ 15 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдореБрджреНрджреЗ рдереЗред рдЬрдм рддрдХ рдЖрдк рд▓реЛрдЧ рдЪрд░реНрдЪрд╛ рдХреЛ рдЙрд╕ рдкрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддреЗ, рддрдм рддрдХ рдмреИрдХрд╡рд░реНрдб рд╕рдВрдЧрддрддрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рдереАред

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд┐рд░реНрдл рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдЯреВрдЯрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдЕрддреАрдд рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджрд┐ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗред рдпрджрд┐ рд╡реЗ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдврд┐рд▓рд╛рдИ рд╣реИред

рд╣рдо рдкрд╣рд▓реЗ рд╣реА async API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВ

рдЖрдк рд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ IDbConnection рдпрд╛ IDbCommand рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдмрдЪрд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд╣рдо рдкрд╣рд▓реЗ рд╣реА async API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВ

рдЖрдк рд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ IDbConnection рдпрд╛ IDbCommand рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдмрдЪрд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

ADO.NET рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Async рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕рднреА ADO.NET рдкреНрд░рджрд╛рддрд╛ рдЬреЛ Async рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдкрдврд╝реЗрдВ: рдЗрд╕ рд╕рдордп SqlServer рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЙрди рд╕рднреА рдХреЛ) рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рдирдХрд╛ рд╡реЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: ORM рдореЗрдВ рддреГрддреАрдп рдкрдХреНрд╖ рдХреЛрдб рдЬреЛ Async api рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ ADO.NET рдореЗрдВ Async рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдпрджрд┐ ado.net рдкреНрд░рджрд╛рддрд╛ async рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдареАрдХ рд╣реИ ... рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддрд░рдлред

рдЕрдм рдпрд╣ ADO.NET рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА 'рдбрд┐рдЬрд╝рд╛рдЗрди' рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдореЗрдВ рд▓реЗрдирджреЗрди рд╕рдВрдмрдВрдзреА рдмрдЪрдд рдмрд┐рдВрджреБ рдмрдирд╛рдиреЗ рдХрд╛ _no_ рддрд░реАрдХрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рдЧрднрдЧ _all_ рдбреЗрдЯрд╛рдмреЗрд╕ DbTransaction рд╕реЗ рдЕрдкрдиреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдкрд░ 'рд╕рд╣реЗрдЬреЗрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ)' рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред OleDbTransaction рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА (рдЬреИрд╕рд╛ рдХрд┐ рдПрдордПрд╕ рдПрдХреНрд╕реЗрд╕ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдореЗрд░рд╛ рд╕рдВрджреЗрд╣ рд╣реИ)ред

рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рдХрд╣рд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирдИ рдирд╣реАрдВ рд╣реИ, рдУрд▓реЗрдбреАрдмреА рдФрд░ рдУрдбреАрдмреАрд╕реА рдиреЗ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрд╛ рд╣реИ, рдЬреЗрдбреАрдмреАрд╕реА рдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдвреВрдВрдв рд▓рд┐рдпрд╛ рд╣реИ, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд┐рдпрд╛ рдХрд╛ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдбреАрдмреА рджрд╛рдпрд░реЗ рдХреЗ рд▓рд┐рдП рднреА рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡реАрдбрд┐рдпреЛрдХрд╛рд░реНрдб рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдмрд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯ 3 рдбреА/рдПрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рд╛рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрди рдЕрдиреНрдп рджреБрдирд┐рдпрд╛рдУрдВ рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреИрд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ: рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬрд┐рди рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреЗрдбреАрдмреАрд╕реА рдбреНрд░рд╛рдЗрд╡рд░, рдУрд▓реЗрдбреАрдмреА рдбреНрд░рд╛рдЗрд╡рд░ рд▓реЗрдЦрдХ рдЗрддреНрдпрд╛рджрд┐) рдХреЛ рдЗрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХрд╛ рдбреНрд░рд╛рдЗрд╡рд░ X рдХреЛ рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛? рдЖрдкрдХрд╛ рдбреНрд░рд╛рдЗрд╡рд░ X рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред "Oracle ADO.NET v10 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ"ред Oracle рдХреЗ рднреАрддрд░ рдХреЛрдИ рднреА рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп SqlClient рд▓реАрдб рд╣реИ, рдФрд░ рд╡реИрдЧрди рд╕реЗ рдЬреЛ рдЧрд┐рд░рддрд╛ рд╣реИ рдЙрд╕реЗ ADO.NET рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╕ред

ADO.NET рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Async рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИрдВред

рдирд╣реАрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд╛рддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред @mythz рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╡рд╣ IDbCommand рдФрд░ IDbConnection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЕрд╡рдзрд┐ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╛ рддреЛ рдЗрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдкреАрдЖрдИ рдПрд╕рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдк рдПрд╕рд┐рдВрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд╣реАрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд╛рддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред @mythz рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╡рд╣ IDbCommand рдФрд░ IDbConnection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреЛрдИ рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ SqlClient рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЕрдиреНрдп рд╕рднреА, рдЬреИрд╕реЗ ODP.NET, async рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рд░реВрдк рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рд╕рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдВрдЯ (DbDataReader/DbCommand рдЖрджрд┐ рдореЗрдВ async рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рдВрдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВред ) рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдПрдХ рдПрд╕рд┐рдВрдХ рд╡реИрд░рд┐рдПрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рдВрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реБрдб рдХреЗ рддрд╣рдд рд╣реИред рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдХреЛрдИ рдПрд╕рд┐рдВрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдХреЛрдб рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдмрд╕ рд╕рд┐рдВрдХ рд╣реИ)ред рд╢рд╛рдпрдж рджреЗрд╡рд░реНрдЯ рдХреЗ рдкреНрд░рджрд╛рддрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдХ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВред

рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

@nvivo

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдмреЗрд╣рддрд░ рд╣реИрдВред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ 15 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдореБрджреНрджреЗ рдереЗред рдЬрдм рддрдХ рдЖрдк рд▓реЛрдЧ рдЪрд░реНрдЪрд╛ рдХреЛ рдЙрд╕ рдкрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддреЗ, рддрдм рддрдХ рдмреИрдХрд╡рд░реНрдб рд╕рдВрдЧрддрддрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рдереАред

рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рдереЗ рдХрд┐ рдХреЛрд░ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ 10 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдм рдХреБрдЫ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рднреА рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрдпреЛрдЧ рд╕реЗ рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкрд╢реНрдЪ-рд╕рдВрдЧрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ? рдЬрд╝рд░реВрд░, рдХрд╛рдиреВрдиреА рд▓рдЧрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХ рдордВрдЪ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдФрд░ рдЙрдирдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдирд┐рд░реНрднрд░рддрд╛ рддрдХ рдиреАрдЪреЗ рдзрдХреЗрд▓ рджреЗрддрд╛ рд╣реИред

рдЖрдк рд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ IDbConnection рдпрд╛ IDbCommand рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдмрдЪрд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рдЪреАрдЬреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝реЗрдВ рдпрджрд┐ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ Async API рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЭреВрда рдлреИрд▓рд╛рдирд╛ рдмрдВрдж рдХрд░реЗрдВред рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП System.Data рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдЕрдЬреНрдЮреЗрдп рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдореБрдЦ рдЖрд░рдбреАрдмреАрдПрдордПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдПрдбреАрдУ.рдиреЗрдЯ рдкреНрд░рджрд╛рддрд╛ рдЕрдкрдиреЗ рдмрд╛рд╣рд░реА рдлреЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ - рдЕрд░реНрдерд╛рддреН рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдоред рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред Async API, IDbConnection рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреЛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдареЛрд╕ ADO.NET рдкреНрд░рджрд╛рддрд╛рдУрдВ рдкрд░ async API рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд ADO.NET рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдореМрдЬреВрдж рд╣реИрдВ, рднрд▓реЗ рд╣реА async рд╕рдорд░реНрдерди рдХреБрдЫ рднреА рд╣реЛред рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкрд┐рдЫрд▓реА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдмрдЪрд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ" рдЕрдиреБрднрд╡рд╣реАрди рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░рд╛рдзрд╛рд░ рд╣реИред

рдореБрдЭреЗ рдЗрд╕реЗ рдмрд╛рдбрд╝ рдХреЗ Microsoft рдкрдХреНрд╖ (cc @davkean @YoungGah) рд╕реЗ рдкреВрдЫрдиреЗ рджреЗрдВ: рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рд╣реИ рдФрд░ рдХрднреА рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖред рдХрдм _do_ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? 6.0 рдЬреИрд╕реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг? рдлрд┐рд░ рдХрднреА? рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред рдареАрдХ рд╣реИ, рдпрд╣ рдорд╛рдиреНрдп рд╣реИ - рд▓реЗрдХрд┐рди _рдЕрдЧрд░ рд╣рдо рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ_, рддреЛ рдпрд╣ рднреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рд╣реИред рддреЛ...рдХреНрдпрд╛ рд╣рдо рд╡рд╣рд╛рдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрд╛рдВрдЪ рдХрд░рдирд╛:
рдпрджрд┐ рдЙрддреНрддрд░ рд╣рд╛рдБ рд╣реИ (рдЖрд░рдЯреАрдПрдо рдХреЗ рдмрд╛рдж рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдВрдЧреЗ), рддреЛ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд░рд╛рдо рджреЗрдЦреЗрдВрдЧреЗ? рдЬреЛрдбрд╝, рдирдП рддрд░реАрдХреЗ? рдпрджрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкрджреНрдзрддрд┐ рдЖрджрд┐ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ?

рдЕрдЧрд░ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИ (рдХрднреА рдирд╣реАрдВ): рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝реЗрдВ?

рдпрд╣ рдзрд╛рдЧрд╛ _right now_ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ - рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ ASAP рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХрд╛ рд╣рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдХрдард┐рди рд╣реИ, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрддрдиреА рдореЗрд╣рдирдд рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, _future_ рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдпреЛрдЬрдирд╛ рдХреА рдХрдореА, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАрд╣реАрди рддрд░реНрдХ рджреЗрддрд╛ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ?

рд╣рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдИрдПрдордУ

Microsoft рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ .NET 4.5 рдХреЗ рд▓рд┐рдП рдЯреВрдЯ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рддрд╛ рд░рд╛рдЬрд╛ рд╣реИред

Microsoft рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ .NET Core рдореЗрдВ рдЯреВрдЯ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ 4.5 рдкрд░ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡реЗ ADO.NET рдЬреИрд╕реЗ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ 1.0 RTM рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╛рд░ рдХрдо рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ .NET рдХреЛрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рд╛рде-рд╕рд╛рде рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рд░ рд╡рд░реНрдЧ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╡рд╣ рддреЛрдбрд╝ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рдмрд╕ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрднрд╛рд╕реА рд╣реЛред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ADO.NET async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред .NET рдХреЛрд░ рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП .NET 4.5 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдЧрд░ рдХреЛрдИ рдЧрд▓рдд рд╣реИ рддреЛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдореБрд╕реНрдХрд░рд╛рд╣рдЯ:

@FransBouma

рдХреЛрдИ рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ SqlClient рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЕрдиреНрдп рд╕рднреА, рдЬреИрд╕реЗ ODP.NET, async рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рд░реВрдк рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рд╕рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдЖрд▓рд╕реНрдп рдпрд╛ рд╕рдордЭ рдХреА рдХрдореА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MySql рдХрдиреЗрдХреНрдЯрд░ рдиреЗ рдЕрдкрдиреЗ рд╕рднреА async рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ TaskCompletionSource рдмрдирд╛рдХрд░ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред рд╡реЗ рдЕрдкрдиреЗ рдХреЛрдб рдмреЗрд╕ рдХрд╛ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реА рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдмрдиреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрд╕рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВрдЧреЗред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ 90% рдмрд╣реБрдд рддрдХрдиреАрдХреА рд▓реЛрдЧ рдПрд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред

рд╕рд╛рд░ рд╡рд░реНрдЧ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╡рд╣ рддреЛрдбрд╝ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рдмрд╕ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрднрд╛рд╕реА рд╣реЛред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ADO.NET async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред

рдпрд╣ рдЯреВрдЯ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЙрди рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрдк-рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд▓реЛрдЧ рдЗрд╕ рд╕реЛрдЪ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдУрд╣ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдм postgresql BAM ERROR wtf рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИ ...

рдПрдХ рдбреАрдмреА рдЕрдмрд╛рд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрдмрд░рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд▓рдд рд╣реИред

рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЬрдмрд░рди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд▓рдд рд╣реИред

рдмрд╣реБрд░реВрдкрддрд╛ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЙрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рдВрджрд░реНрдн рдПрдХ рдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рд╣реИ рдФрд░ рдЖрдк QueryAsync рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдпрд╛ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж QueryAsync рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдк рдПрдХ рд╡рд┐рдзрд┐ рдЫрдВрдж рдХреЛ рдЙрд╕реА рдирд╛рдо рд╕реЗ рдЫрд┐рдкрд╛рдиреЗ рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@рдЬреЗрдореНрд╕рдПрдирдХреЗ

рдпрджрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рддреГрддреАрдп рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдмрдВрдз рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЙрдк-рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рдЖрдк рд╡рд┐рдзрд┐ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рд╣реИ рдЬреЛ рдЙрдк рд╡рд░реНрдЧ рдХреЛ рдХреЛрдИ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рд╣реИ рдЬрд┐рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдРрдк рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рд╣рдВрдХреА рдбреЛрд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЙрдк рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЧрд▓рдд рд╣реИред рд╡рд╣ рдордЬрдмреВрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдЙрдк рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рддреЛ, рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдк рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд╣рд╛рдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

@ рдлрд┐рд▓рд┐рдк-рд╣реЗрдбрди рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВред

рдЖрдк рд╕рд╛рдорд╛рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдирд╛рдо/рддрд░реНрдХ) рд╡рд╛рд▓рд╛ рд╕рджрд╕реНрдп рд╣реИред рдпрджрд┐ рддрд░реНрдХ рдЕрд▓рдЧ рд╣реИрдВ рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдУрд╡рд░рд▓реЛрдб рдХреЛ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕реВрдХреНрд╖реНрдо рдмрдЧ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╣ рдордЬрдмреВрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдЙрдк рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рдлрд┐рд░ рд╡рд╣рд╛рдВ рдордд рдбрд╛рд▓реЛред

@jamesnk

рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдордд рдбрд╛рд▓реЛред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рддрд░реНрдХ рджреЗ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рдкреВрд░реНрд╡ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд╣рд╛рдиреА рдХрд╛ рдЕрдВрдд

@JamesNK рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдордиреЗ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд░рдЦрд╛, _Microsoft_ рдиреЗ рдЗрд╕реЗ рд╕рд╛рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рд╡рд╣рд╛рдВ рд░рдЦрд╛ред _all_ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдиреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдХрднреА рднреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЯреВрдЯ рди рдЬрд╛рдП (рдореИрдВ "рдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП" рд╕рдВрдХрд▓рди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ _рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ_ рддреЛрдбрд╝ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ)ред _most_ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рд╛рдЭрд╛ рдпрд╛ рддреБрд░рдВрдд рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреЛ рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИ? throw new NotImplementedException() рдЙрд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдХреЗ рдЕрдВрджрд░? рдЗрд╕рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХреЛрдИ рддрд░реНрдХ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ (рд░рдирдЯрд╛рдЗрдо) рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИред

рдЖрдЗрдП рдЖрдЬ рджреЗрдЦреЗрдВ: рдЬрдм рдХреЛрдИ рдкреНрд░рджрд╛рддрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ IDbAsyncConnection рдЬреЛрдбрд╝реВрдВрдЧрд╛, рди рдХрд┐ рдХрд╡рд░ рдХреЗ рдиреАрдЪреЗ рд╕рдордХрд╛рд▓рд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рднреНрд░рдо рдФрд░ рдЕрдХреНрд╖рдорддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ,

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ IDbAsyncConnection рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрдм рдХреЛрдИ рдкреНрд░рджрд╛рддрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдХрд╡рд░ рдХреЗ рддрд╣рдд рд╕рдордХрд╛рд▓рд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рднреНрд░рдо рдФрд░ рдЕрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ

@NickCraver +1000 рдЙрд╕ рдкрд░ред рдЗрд╕ рдмрдЧ рдХреА рддрд░рд╣ рдпрд╣рд╛рдБ рдЬрд╣рд╛рдБ oracle рдЯреАрдо рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ async рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред

рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рддрд░реНрдХреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рдПрдХрд╛рдзрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдорд╛рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ IDbAsyncConnection рдФрд░ IDbConnection рджреЛрдиреЛрдВ рд╣реИред рдЖрдк рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ COM рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛рдЫ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рдпрд╣ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреА рдЬрдЧрд╣ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рдЬрд╛рдКрдВрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

рдпрджрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди NotImplementedException рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛ рддреЛ рдЗрд╕реЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкрд░ рдмреЛрд▓реНрдЯ рдХрд░рдирд╛ рдЧрд▓рдд рдХрд╛рдо рд╣реИред рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдордд рдбрд╛рд▓реЛред рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рдХреЛ рдРрд╕рд╛ рдХрд░рддреЗ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдПрдВред

рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛ рдпрд╛ рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ, рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

@JamesNK рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ IDbAsyncConnection IDbConnection рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдРрд╕рд╛ рд╣реА рд╣реЛ - рд╡реЗ рдЖрдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреИрдкрд░ рдореЗрдВ рд╣рдо рд╢рд╛рдпрдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ:

``` рд╕реА#
IEnumerableрдЬрд┐рдЬреНрдЮрд╛рд╕рд╛(рдпрд╣ рдЖрдИрдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рд╕реАрдПрдирдПрди, рдХрдорд╛рдВрдбрдбрд┐рдлрд┐рдирд┐рд╢рди рд╕реАрдПрдордбреА)

``` C#
Task<IEnumerable<T>> QueryAsync<T>(this IDbAsyncConnection cnn, CommandDefinition cmd)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдХ/рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдВрдЧреЗред

_рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:_ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдирд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ Async рдЗрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛...

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ ADO.NET рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрдбрд╝реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП:

  1. 2003 (1.1) рдХреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ 1.0 рд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛
  2. реирежрежрел (реи.реж) рдХреЛ рд╡реЗ рдкреНрд░рджрд╛рддрд╛ рдореЙрдбрд▓ рдореЗрдВ рдЪрд▓реЗ рдЧрдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдЬ рдореМрдЬреВрдж рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИрдВ
  3. реирежрезреи (рек.рел) рдкрд░ тАЛтАЛрдЙрдиреНрд╣реЛрдВрдиреЗ рдПрд╕рд┐рдВрдХ рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬреЛ рд╕рдорд╛рди рдЪреАрдЬреЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рдереЗред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ 2003 рдПрдкреАрдЖрдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдПрдХ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬреЛ рдпрд╛ рддреЛ рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ (рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдпрд╛ рдкрд┐рдЫрд▓реЗ рджрд╢рдХ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде .NET рдХреЛрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рдирд╛ рдХрд┐рд╕реА рднреА .NET рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде _source рд╕рдВрдЧрдд_ рд╣реИред рдкрд┐рдЫрд▓реЗ 15 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкреБрди: рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдХреЛрд░рдПрдлрдПрдХреНрд╕ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдпрд╣ рдПрдкреАрдЖрдИ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИред рдЕрдЧрд░ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╣рд╛рдВ рдХреЛрдИ рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдирд┐рд╢рд╛рди, рд╡рд░реАрдпрддрд╛рдУрдВ рдФрд░ рдЕрд╣рдВрдХрд╛рд░ рддрдХ рдЙрдмрд╛рд▓ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рди рд▓рд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдиреНрдпреВрдЯреНрд░рд▓ рдЗрдиреНрдлреЗрд░рдлреЗрд╕ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рджреЗрдЦреЗрдВ http://davidfowl.com/assembly-neutral-interfaces/ рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
http://davidfowl.com/assembly-neutral-interfaces-implementation/

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рддрдЯрд╕реНрде рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╣рд╛рдВ рдПрдХ рд▓рд╛рд▓ рд╣реЗрд░рд┐рдВрдЧ рд╣реИрдВ; рдЕрдЧрд░ рдХреБрдЫ рд╣реИ
рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп" рдмрд╛рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рд╕рд╛рдорд╛рдиреНрдп" рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
рдлреАрдЪрд░ рдХреЗ рд╡рд╛рд╖реНрдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореВрдХ рд╣реИред
28 рдирд╡рдВрдмрд░ 2015 рдХреЛ рд╢рд╛рдо 5:38 рдмрдЬреЗ, "рд╢рд╛рд╣рд┐рдж рдЦрд╛рди" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддрдЯрд╕реНрде рд╣реИ
рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорджрдж рдХрд░ рд╕рдХрддреЗ рдереЗ рдЗрд╕реЗ рджреЗрдЦреЗрдВ
http://davidfowl.com/assembly-neutral-interfaces/ рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
http://davidfowl.com/assembly-neutral-interfaces-implementation/

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/corefx/issues/3480#issuecomment -160323344ред

рдореИрдВ рдХреНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВ:

  • CoreClr (рдирдпрд╛ рдЪрдордХрджрд╛рд░ рдврд╛рдВрдЪрд╛) рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреАрдЫреЗ рдХреЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ (15 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рд░рд╛рдЬрд╛ рд╣реИ)ред

рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐:

  • рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЦрд░рд╛рдм рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • [рдЕрдкреНрд░рдЪрд▓рд┐рдд] рд╕реЗ рд╕рдЬрд╛рдП рдЬрд╛рдиреЗ рддрдХ рдХреБрдЫ рднреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреМрди рдХрд┐рд╕реА рднреА рд╕рдордп рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдмрдВрдз рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдирд╣реАрдВ рд╣реИрдВред

рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

  • рдмреЗрд╕ рдХреНрд▓рд╛рд╕ (рдПрд╕) рдХреЗ рдмрдЬрд╛рдп рдПрдкреАрдЖрдИ рдХреА рдЖрдзрд╛рд░ рд╕рддрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

рдореИрдВ рдЬреЛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ:

  • рд╣рдо 2015 рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИрдВ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдкрд░ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдФрд░ рджреБрдЦрдж рд╣реИред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд░реНрдЬрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдФрд░ рдЕрдЧрд░ рдпрд╣ рдХреБрдЫ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ; рдЕрдЪреНрдЫрд╛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред

interface IOldInterface {}
interface INewInterface : IOldInterface {}
interface IDifferentInterface {}

class SomeClass : IOldInterface, INewInterface, IDifferentInterface
{
}

рдмрд╕ рдЗрд╕реЗ IInterfaceV2 , IInterfaceV3 рди рдХрд╣реЗрдВ, рдЗрд╕реЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдкреБрд░рд╛рдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ [Obsolete] рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХреБрдЫ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИрдВ; рдЗрд╕ рджрд┐рди рдФрд░ рдЙрдореНрд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрдиреЗ рд╡рд╛рд▓реА рдЧреИрд░-рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдпред

public interface IDbUtilityProviderFactory 
{
    IDbConnectionStringBuilder CreateConnectionStringBuilder();
    IDbParameter CreateParameter();
}

public interface IDbBlockingProviderFactory : IDbUtilityProviderFactory 
{
    IDbBlockingCommand CreateBlockingCommand();
    IDbBlockingConnection CreateBlockingConnection();
}

public interface IDbAyncProviderFactory : IDbUtilityProviderFactory 
{
    IDbCommandAsync CreateAsyncCommand();
    IDbConnectionAsync CreateAsyncConnection();
}

@abatishchev

CoreClr (рдирдпрд╛ рдЪрдордХрджрд╛рд░ рдврд╛рдВрдЪрд╛) рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреАрдЫреЗ рдХреЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ (15 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рд░рд╛рдЬрд╛ рд╣реИ)ред

рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдордПрд╕ рдЯреАрдореЗрдВ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдзреНрдпрд╛рди рд░рдЦрддреА рд╣реИрдВ рдЬреЛ рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ System.Data рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдирд┐рд░реНрдгрдп рд╡реНрдпрд╛рдкрдХ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рдЬреЛ рдХрд┐ рдЗрди рдореВрд▓ рд╕рд╛рд░реЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкрд░реЛрд╕рдирд╛ рдЪрд╛рд╣рд┐рдПред

  • рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЦрд░рд╛рдм рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • [рдЕрдкреНрд░рдЪрд▓рд┐рдд] рд╕реЗ рд╕рдЬрд╛рдП рдЬрд╛рдиреЗ рддрдХ рдХреБрдЫ рднреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреМрди рдХрд┐рд╕реА рднреА рд╕рдордп рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдмрдВрдз рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдирд╣реАрдВ рд╣реИрдВред

рд╕рдЯреАрдХ рд░реВрдк рд╕реЗред

рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ CoreClr рдХреА рдмрд╛рдд рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХ, рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ? рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ? рдмреВрдо! рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 15 рд╕рд╛рд▓ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рдж, рдЖрдк рд╡рд╣реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдФрд░ рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╣реИрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЕрдЦрдВрдб рдврд╛рдВрдЪреЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрдм рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╣реИ рддреЛ рдЖрдк рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдЗрдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░реЗрдВ, рдЗрд╕ рдмрд╛рд░ рдкреНрд░рдореБрдЦ рдУрдЖрд░рдПрдо рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдЕрдиреНрдп ADO.NET рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реБрдиреЗрдВред
рдзрдиреНрдпрд╡рд╛рджред

@abatishchev рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдЕрдВрдХред рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдореИрдВ рднреА: рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рддрд░реНрдХ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпрджрд┐ CoreClr рдореЗрдВ рдХреЛрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ .net full рдкрд░ рдирд╣реАрдВ рдЪрд▓реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдЬрд┐рд╕рдиреЗ рдХрднреА рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)ред

рдореЗрд░реА рдУрд░ рд╕реЗ рд▓рдВрдмреА рдЪреБрдкреНрдкреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

.NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдХрдорд░реЗ рдореЗрдВ рд╣рд╛рдереА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ .NET рдХреЛрд░ рдореЗрдВ рд▓рдЧрднрдЧ рдЙрддрдиреЗ рдПрдкреАрдЖрдИ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдиреЗ рд▓реЛрдЧ - рд╣рдорд╛рд░реЗ рд╕рд╣рд┐рдд - рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдореМрдЬреВрджрд╛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред

рд╣рдо рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ / рдореЛрдиреЛ рдореЗрдВ .NET рдХреЛрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреНрдпрд╛ рд╣реЛрдЧреАред рди рдХреЗрд╡рд▓ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╣ рдХрд╛рдо рдЦреБрд▓реЗ рдореЗрдВ рд╣реЛ, рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ

рдЬрдм рд▓реЛрдЧ .NET Core рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдмрд╣реБрдд рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВ:

рдпрджрд┐ .NET Core рдореЗрдВ .NET Framework рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо API рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ .NET Core рдПрдХ рдирдпрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдПрдХ рдордирдорд╛рдирд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдпрд╣реА рд╣рдордиреЗ рдЕрддреАрдд рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИред .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдПрдХ рдРрд╕реА рдХрд╣рд╛рдиреА рдмрдирд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЗрдЦрдХ рдмрдирд╛ рд╕рдХреЗрдВ (рдФрд░ рдХрдВрд╕реЛрд▓ рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рд▓реЗ рдРрдкреНрд╕ рднреА) рдЬреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдкрд░ рдЪрд▓реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реЛ рдЬреЛ 100% рд╕рдВрдЧрдд рд╣реЛред рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдк рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рд╕реБрдиреЗрдВрдЧреЗред

рдЙрд╕рдХреЗ рдКрдкрд░, рд╣рдорд╛рд░рд╛ рдЗрд░рд╛рджрд╛ .NET рдХреЛрд░ рдХреЗ рднреАрддрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрдЧрдд рдмрд╛рд░ рд░рдЦрдирд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо .NET рдХреЛрд░ рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ рдПрдкреАрдЖрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЗрдВрдЯрд░рдлреЗрд╕

рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ - рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ - рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХрд╛ рддрд░реНрдХ рд╣реИ рдХрд┐ рдкреНрд░рднрд╛рд╡ рдХрдо рд╣реИ рдФрд░ рдЗрд╕реЗ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЬ рднреА рд╣реИ, рдпрд╣ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдФрд░ рд╕реНрд░реЛрдд рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред

WinRT, рдЬреЛ COM рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ IFoo , IFoo2 , IFoo3 ред рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдпрд╛ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рдЕрднреА рддрдХ, рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реБрдирдиреЗ рдореЗрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдФрд░ рдореИрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ (рдЬреИрд╕реЗ рдорд┐рд╢реНрд░рдг-рдЗрди/рд▓рдХреНрд╖рдг, рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░-рд╕рдм рдХреБрдЫ, рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рджрд╕реНрдп)ред

рдЪреВрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕рд╛рд░ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддреЗ рд╣реИрдВред

ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕

рдпрд╣ рд╕рдм рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдореВрд▓ рдкреНрд░рд╢реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ: ADO.NET рдкреНрд░рджрд╛рддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдбреЗрд╡рд┐рдб рдиреЗ рд╕рдордЭрд╛рдпрд╛: рдЬрдм рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗ, рддреЛ рд╣рдордиреЗ рдЗрдиреНрд╣реЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдорд╛рдирд╛ рдерд╛, рдЬреЛ рдХрд┐ .NET 2 / Visual Studio 2005 рдореЗрдВ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╣реЛрдирд╛ ORM рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдмреВрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрдВ .NET рдХреЛрд░ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдкреНрд░рддрд┐ рд╕рдЪреЗрдд рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдШрдЯрдХ рд╕реНрдЯреИрдХ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IDataReader рдХреА рдирд┐рд░реНрднрд░рддрд╛ DataTable , рдЬрд┐рд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ DataSet ред рдЬреИрд╕рд╛ рдХрд┐ dotnet/runtime#14302 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо DataTable рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо DataSet рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЕрднреА рднреА рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА -> DataTable -> DataSet ред рд╣рдо рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ @YoungGah рдХреЗ рд╕рд╛рде рдХрд╛рдо

рдХреНрдпрд╛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛?

рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ, IDataReader рдореЗрдВ рдХреЗрд╡рд▓ DataTable рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ
GetSchemaTable() рд╡рд┐рдзрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА DataTable рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ
рдЬрдВрдЬреАрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рддреБрд░рдВрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реИ
рдмрд╛рдж рдХреА рддрд╛рд░реАрдЦ рдореЗрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ _some_ рджрд┐рдорд╛рдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ (рдЪрд╛рд╣реЗ
рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдирд╣реАрдВ) рдЗрд╕реЗ рдЗрд╕ рдкрд░ рдмреЗрдирдХрд╛рдм рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЬреАрдм рдмрдирд╛рддрд╛ рд╣реИ
рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛
"рдЕрднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рд╣рдЯрд╛рдПрдВ, рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝реЗрдВ" рдЬрд┐рддрдирд╛ рд╕рд░рд▓
5 рджрд┐рд╕рдВрдмрд░ 2015 рдХреЛ 12:17 рдмрдЬреЗ, "рдЗрдореЛ рд▓реИрдВрдбрд╡рд░реНрде" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореЗрд░реА рдУрд░ рд╕реЗ рд▓рдВрдмреА рдЪреБрдкреНрдкреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред
.NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдорд░реЗ рдореЗрдВ рд╣рд╛рдереА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ .NET . рд╣реИ
рдХреЛрд░ рдореЗрдВ рд▓рдЧрднрдЧ рдЙрддрдиреЗ рдПрдкреАрдЖрдИ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдиреЗ рд▓реЛрдЧ - рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рд╣рдо - рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореМрдЬреВрджрд╛ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╣рдо рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ / рдореЛрдиреЛ рд╕реЗ .NET рдХреЛрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╛рд╣рд░ рдмреБрд▓рд╛рдПрдЧрд╛
рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ
рд╣реЛрдирд╛ред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╣ рдХрд╛рдо рди рдХреЗрд╡рд▓ рдЦреБрд▓реЗ рдореЗрдВ рд╣реЛ, рдмрд▓реНрдХрд┐ рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рд╕рдореБрджрд╛рдп рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред
рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ

рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрдм рд▓реЛрдЧ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдмрд╣реБрдд рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИ
.NET рдХреЛрд░ред рдПрдХ рдмрд╛рдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВ:

рдпрджрд┐ .NET Core рдореЗрдВ .NET рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо API рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ
рдврд╛рдВрдЪрд╛ред

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ .NET Core рдПрдХ рдирдпрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ рдФрд░ рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рд╕реЗрдЯ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдордирдорд╛рдирд╛ рд╕реЗрдЯ
http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx
- рдпрд╣реА рд╣рдордиреЗ рдЕрддреАрдд рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рд╣реИ a
рдХрд╣рд╛рдиреА рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЗрдЦрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХрдВрд╕реЛрд▓ рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд
рдПрдХреНрд╕рдЯреЗрдВрдб рдЗрд╡рди рдПрдкреНрд╕) рдЬреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдкрд░ рдЪрд▓реЗрдВрдЧреЗред рдЗрд╕
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реЛ рдЬреЛ рдХрд┐ резрежреж% рд╣реИ
рдЕрдиреБрдХреВрд▓ред рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдк рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рд╕реБрдиреЗрдВрдЧреЗред

рдЙрд╕рдХреЗ рдКрдкрд░, рд╣рдорд╛рд░рд╛ рдЗрд░рд╛рджрд╛ .NET рдХреЛрд░ рдХреЗ рднреАрддрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрдЧрдд рдмрд╛рд░ рд░рдЦрдирд╛ рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдмреАрдЪ рдореЗрдВ рдПрдкреАрдЖрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ
рдПрдХ .NET Core API рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рджреВрд╕рд░рд╛ред
рдЗрдВрдЯрд░рдлреЗрд╕

рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ - рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ - рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХрд╛ рддрд░реНрдХ рд╣реИ рдХрд┐ рдкреНрд░рднрд╛рд╡ рдХрдо рд╣реИ рдФрд░ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ
рд╡рд╣, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЬ рднреА рд╣реИ, рдпрд╣ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдФрд░ рд╕реНрд░реЛрдд рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред

WinRT, рдЬреЛ COM рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ,
IFoo, IFoo2, рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЖрдИрдлреВ3. рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрдиреНрджрд╛ рд╣реИ рдпрд╛
рдЗрд╕реЗ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ред рдЕрднреА рддрдХ, рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдЯреАрдо рдХреЗ рдПрдХ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ
рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд╕реБрдиреЗрдВред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ
рдЕрдВрддрд░рд┐рдХреНрд╖, рдФрд░ рдореИрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ (рдЬреИрд╕реЗ
рдорд┐рд╢реНрд░рдг-рдЗрди/рд▓рдХреНрд╖рдг, рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░-рд╕рдм рдХреБрдЫ, рдпрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рджрд╕реНрдп
рдЗрдВрдЯрд░рдлреЗрд╕)ред

рдЪреВрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реИрдВ
рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕рд╛рд░ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ред
ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕

рдпрд╣ рд╕рдм рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдореВрд▓ рдкреНрд░рд╢реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:
ADO.NET рдкреНрд░рджрд╛рддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдбреЗрд╡рд┐рдб рдиреЗ рд╕рдордЭрд╛рдпрд╛: рд╣рдордиреЗ рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдЗрдиреНрд╣реЗрдВ рдкрджрд╛рд╡рдирдд рдорд╛рдирд╛
рдкреНрд░рдХрд╛рд░ рдкреЗрд╢ рдХрд┐рдП рдЧрдП, рдЬреЛ .NET 2 / Visual Studio 2005 рдореЗрдВ рдереЗред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ
рдпрд╣ рджреГрдврд╝ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ
рдкреЛрд░реНрдЯ ORM рдЪреМрдЦрдЯреЗ .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдПред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдмреВрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдХрд┐ рд╣рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ .NET Core рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
.NET рдХреЛрд░ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХрдВрдкреЛрдиреЗрдВрдЯрд╛рдЗрдЬреНрдб рд╕реНрдЯреИрдХ рд╣реИред NS
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IDataReader рдХреА рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ a
рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдЯрдиреЗрдЯ/рд░рдирдЯрд╛рдЗрдо#14302 . рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ
https://github.com/dotnet/corefx/issues/1039 , рд╣рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ
рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП
рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВ рд╕рд╛рде рдХрд╛рдо рдХрд░реВрдВрдЧрд╛
@YoungGah https://github.com/YoungGah рдХреЗ рд╕рд╛рде рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛?

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/corefx/issues/3480#issuecomment -162115855ред

рд╣рд╛рдВ, IDataReader рдХреА DataTable рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА; рдпрд╛ рддреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреЛрд░реНрдЯ рди рдХрд░рдХреЗ, рдпрд╛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ -> рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреЛрдбрд╝рдХрд░ред

рдХреНрдпрд╛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛?

рд╣рд╛рдБ GetSchemaTable() рд╡рд┐рдзрд┐ рдХреЗ рдмрд┐рдирд╛ рднреА ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ADO.NET рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореБрджреНрджреЛрдВ рдкрд░ рднрд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЛ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ -> рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдЧрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм GetSchemaTable() рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рддреЛ GetSchemaTable() рдкрд░ рдирд┐рд░реНрднрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ (рддрд╛рдХрд┐ рдореЗрд░рд╛ рд╡реЛрдЯ рд╣реЛ) - рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рджреЗрд╡реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рднрд╛рд░ рджреВрдВрдЧрд╛ рдЬреЛ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

@terrajobst рдЖрдкрдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@terrajobst рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ Npgsql рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП ADO.NET рдкреНрд░рджрд╛рддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, ORM рд╕реЗ рдирд╣реАрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .NET рдХреЛрд░ рдореЗрдВ, Microsoft рдХреЛ ADO.NET рдХреА рдХреБрдЫ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓реА рдЖ рд░рд╣реА рд╡рд┐рд░рд╛рд╕рддреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдЕрд░реНрдерд╛рддреН рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереАред рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░, рдХреНрд▓реАрдирд░ рдПрдкреАрдЖрдИ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдорд╛рд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдПрдХ рдирдпрд╛ рдФрд░ рдмреЗрд╣рддрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдкреАрдЖрдИ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдорд╛рд░реЗ рдмрд┐рдирд╛ рднреА рд╕рдЪ рд╣реИ)ред рдореИрдВ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛
рдУрдЖрд░рдПрдо (рдФрд░ рдЕрдиреНрдп) рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдЯреВрдЯ-рдлреВрдЯ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рджрд░реНрдж, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХрднреА рднреА рд╕рдлрд╛рдИ рдФрд░ рдЯреВрдЯ-рдлреВрдЯ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ - .NET рдХреЛрд░ рд╡рд╣ рдЕрд╡рд╕рд░ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдХрд╛рд░рдХ рдпрд╣ рд╣реИ рдХрд┐ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рд░рдЦрдиреЗ рдХрд╛ рдЕрд░реНрде рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рднреА рд░рдЦрдирд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрдиреНрд╣реЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдорддрд▓рдм рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рд░рдЦрдирд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд▓рдЧрддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХрд┐рддрдиреЗ рдУрдЖрд░рдПрдо рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛, рдкрд╕рдВрдж рдмрд╣реБрдд рдирд╣реАрдВ рд╣реИ рдпрд╣рд╛рдБ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдореЗрд░реА рдЖрдВрдд рдХреА рднрд╛рд╡рдирд╛ рдЗрд╕ рдЕрд╡рд╕рд░ рдХреЛ рд▓реЗрдиреЗ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рднреБрдЧрддрдирд╛ рдкрдбрд╝реЗ ...

PS рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЗ рдорд╛рд░реНрдЧ рд╕реЗ рдиреАрдЪреЗ рди рдЬрд╛рдПрдВ, рдЕрд░реНрдерд╛рдд IFoo2, IFoo3ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЧреИрд░-рд╕рдорд╛рдзрд╛рди рд╣реИред
рдкреАрдкреАрдПрд╕ рдпрджрд┐ рдЖрдк .NET рдХреЛрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЧреИрд░-рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ .NET рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЪрд▓реЗ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред .NET рдХреЛрд░ред

@terrajobst рдЪреБрдкреНрдкреА рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж;)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ ADO.NET рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЧрджреНрджреЗрджрд╛рд░ рд╣реИ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ)ред рдореИрдВ рдЗрд╕ рдкрд░ @roji рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ: .NET рдХреЛрд░ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП .NET рдХреЛрд░ рдХреЛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг) рдирд┐рдпрдо рд╕реЗ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП .NET рдкреВрд░реНрдгред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ ADO.NET рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ (рдпрд╛рдиреА рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрд╕рдХреНрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рддрд░рдл рдирд╣реАрдВ! рддреЛ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ SQL рд╕рд░реНрд╡рд░ рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп API рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ ADO.NET рдкреНрд░рджрд╛рддрд╛ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЫреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ), рддреЛ рдЕрдЧрд▓реА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рд╣рд┐рдд рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЕрдзрд┐рдХ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдФрд░ рд╣рдо рддреГрддреАрдп рдкрдХреНрд╖ рджреЗрд╡ #ifdef рд╕реНрд╡рдпрдВ рдЧрдбреНрдвреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬреЛ рдЫреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ IDataReader рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪреАрдЬреЛрдВ рдХреЛ .NET рдкреВрд░реНрдг _if_ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд░рдЦрдирд╛ рдХрдард┐рди рдмрдирд╛ рджреЗрдЧрд╛, рдЪрд╛рд╣реЗ рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рдкреЛрд░реНрдЯ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрд╕реЗ рднреА рдпрд╣ рдПрдХ рдЦреЛрдпрд╛ рд╣реБрдЖ рдХрд╛рд░рдг рд╣реИред рдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ .NET рдкреВрд░реНрдг рдХреЛ .NET рдХреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ / рдмрд╛рд░-рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ .NET рдХреЛрд░ рдореЗрдВ рдХреБрдЫ _new_ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирддрд╛ рд╣реИ .NET рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдЕрд╕рдВрдЧрддред рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ :)

рдпрд╣ рдЕрдХреЗрд▓реЗ рд╣реА рдЗрд╕реЗ рдПрдХ рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐ рдмрдирд╛рддрд╛ рд╣реИ: рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрддрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╡реИрд╕реЗ рднреА рдПрдХ рд▓рд╛рд▓ рд╣реЗрд░рд┐рдВрдЧред IMHO рдЕрдЧрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ .NET рдХреЛрд░ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЙрдЪрд┐рдд рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛рдиреА рдкреБрд░рд╛рдиреЗ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдХреНрд░реЙрдлреНрдЯ рдХреЛ .NET рд╕реЗ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рд╕реБрдзрд╛рд░реЗрдВред рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдПрдкреАрдЖрдИ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ADO.NET (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИрдВред рдПрдХ рд╕рд╛рдл рдмреНрд░реЗрдХ рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЬреЛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЗрдбреАрдмреАрд╕реА рдЕрднреА рднреА рдордЬрдмреВрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдУрдбреАрдмреАрд╕реА рдЕрднреА рднреА 25 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓реА рдмреЗрд╣рддрд░ рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реЛрдЪрдиреЗ рдкрд░, @FransBouma рдХреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдмрд╣реБрдд рдорд╛рдпрдиреЗ

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ ADO.NET-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░реНрдЪрд╛ рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рдЬрд╛рддреА рд╣реИ, рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред

рдпрд╣ @roji рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣реИ: рдПрдкреАрдЖрдИ рдХреЛ рди рддреЛрдбрд╝рдХрд░ рд▓рдШреБ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХ .Net рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдкрдХрд╛ рдмрд┐рд▓реНрдб рд╣рд░ рд╣рдлреНрддреЗ рдЯреВрдЯрддрд╛ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдкреАрдЖрдИ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред

рддреЛ рдпрд╣ рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рддреЗрдЬрд╝ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИред

(рд╕рдВрдкрд╛рджрд┐рдд)
рдЖрдк рдХреЗрд╡рд▓ рддрдм рддрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛, рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди (!) .net рдХреЛрд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ .net рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рдмрдирд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдпрд╣ .net рдХреЛрд░ рдХреЛ .net рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рдЕрдм рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рдирд╣реАрдВ рдмрдирд╛ рджреЗрдЧрд╛ _ рдХреЛрдб рдХреЗ рдЙрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП_ред рдХреМрди рд╕рд╛ рдЖрдИрдПрдордПрдЪрдУ рдпрд╛ рддреЛ .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рд╡рд╣реА (рд╡рд░реНрдЧ) рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ .NET рдкреВрд░реНрдг рдореЗрдВ, рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯ (рдЬреЛ рдЖрдИрдПрдордПрдЪрдУ рдЕрд╕реНрдерд┐рд░ рд╣реИ) рдпрд╛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдмреИрдХрдкреЛрд░реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬреЛ рд╕рдЪрдореБрдЪ рдХреНрдпрд╛ рд╣реИ рдПрдордПрд╕ рдиреЗ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдХрд╣рд╛) рд╕реЗ .NET рдкреВрд░реНрдг, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрд╛рдбрд╝ рдХреЗ рдХрд┐рд╕ рддрд░рдл рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ: 'рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдмреА рдХреЗ рд╕рд╛рде (рд╡рд░реНрдЧ) рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХреНрд╕ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рд╣реИ, рдФрд░ рджреЛрдиреЛрдВ .NET рдХреЛрд░ рдФрд░ .NET рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЗрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕ рдПрдВрдб рдмреА рдЬреАрддрд╛' t рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди', рдЗрд╕рдХрд╛ рдЕрднреА рднреА рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ X & B рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдирдИ рдЪреАрдЬреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЬреЛ рдареАрдХ рд╡рд╣реА рд╣реИ рдЬрд╣рд╛рдВ рдЪреАрдЬреЗрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдпрд╣ рднреА рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХрд╣рд╛рдВ рд╣реИред

рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рдмрд╣реБрдд рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдореЗрдВ X & B рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдЗрдВрдЯрд░рдлреЗрд╕/рдХрдХреНрд╖рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ .NET рдХреЛрд░ рдореЗрдВ рдирдИ рдХрдХреНрд╖рд╛рдУрдВ/рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░реИрдкрд░ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдпрд╛ рддреЛ X & B рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдмреЗрд╣рддрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд╛рд▓реЗ рдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ .NET рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд░реВрдк рд╕реЗ API рдХреЗ рдмрд┐рдирд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреНрд╕ рдПрдВрдб рдмреА рдореЗрдВ рд▓рд╛рдкрддрд╛ рдЪреАрдЬреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ #ifdef рдХрд░рдирд╛ рд╣реИ, рджреЛрдиреЛрдВ рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╕рдордп, рдЖрдИрдПрдордПрдЪрдУ .NET рдХреЛрд░ рдореЗрдВ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕/рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕реВрдХреНрд╖реНрдо рднреА , рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЕрдкрд╡рд╛рдж рдХреА рддрд░рд╣) рд╡реИрд╕реЗ рднреА рд╡рд╣рд╛рдВ рдХреНрд░реЙрдк рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП .NET рдХреЛрд░ рдХреЛ 'рдкреЛрд░реНрдЯрд┐рдВрдЧ' рдХреЛрдб рдЗрд╕рдХреЗ _new_ API (X&B рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддрд╛ рд╣реВрдВред

@ryanbnl , рдореИрдВ

@roji рдЬрдм рддрдХ рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреИрдХреЗрдЬ (рдЬреИрд╕реЗ рдЬреАрдПрд╕реА рдирд╣реАрдВ) рд╕реЗ рдПрдХ рдирдпрд╛ рдмрд╛рд╣рд░реА рд╣реИ, рдЬрдм рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдХреЛрд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рддрд╛рд▓ рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдУрдЖрд░рдПрдо рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╛рдо System.Data.IDbConnection рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ ...

@benadams рдпрд╣ рдПрдХ рд╡реИрдз рдЯрд┐рдкреНрдкрдгреА рд╣реИ - рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЧреИрд░-рдиреБрдЧреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдкреАрдЖрдИ рдЬреИрд╕реЗ ADO.NET рджрд┐рдорд╛рдЧ рдореЗрдВ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдПрдкреАрдЖрдИ рд╕реНрдерд╛рди рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ - .NET рдХреЛрд░ рдЕрдкреНрд░рд╛рдкреНрдп рдмрдиреЗ рдмрд┐рдирд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдкрдврд╝реЗрдВ: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпрд╛рдБ рдпрд╛ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ)

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ ...

@roji рдХрд╛ рдорддрд▓рдм рд╕рд┐рд░реНрдл рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдерд╛ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП System.Data.Database ; рдХреЛрд░ рдФрд░ рдлреБрд▓ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЬреАрдПрд╕реА рдХреЗ рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рдореЗрдВ рд╣реЛрдЧрд╛ рдпрд╛ рдпрд╣ рдЯрдХрд░рд╛рдПрдЧрд╛ред

рдирдЧреЗрдЯ рдкреЙрдЗрдВрдЯ рдкрд░; рдпрд╣ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдкреВрд░реНрдг рдФрд░ рдореВрд▓ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рдореЗрдВ рдирд╣реАрдВ рд░рд╣ рд╕рдХрд╛; рдФрд░ рд╡рд░реНрддрдорд╛рди System.Data рдПрдкреАрдЖрдИ рдкреЛрд╕реНрдЯ 4.6.1+ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ?

рдпрд╣ рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рджрд░реНрдж рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛; рд▓реЗрдХрд┐рди рдХреБрдЫ рдХреЙрдореНрдкреЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреВрдЯрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ DataSet рдЗрд╕рд▓рд┐рдП рдУрдЖрд░рдПрдо рдкреНрд░рджрд╛рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХреЛрд░рдХреНрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрдирд░реНрд╡рд┐рдХреНрд░рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдПрдкреАрдЖрдИ рдХрд┐ nuget рдореЗрдВ рдФрд░ GAC'd рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд╣рд░ рд░рд╣рддреЗ рдереЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ netstandard1.2 рдЬреИрд╕реЗ 4.5.2+, coreclr, UWP, рдореЛрдиреЛ / Xamarin рдЖрджрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреБрдЫ рдФрд░ рджрд░реНрдж рдЕрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╕рдордп рд╣реИред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдирдП рдПрдкреАрдЖрдИ рдПрдЪреЗрдорд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣, DataSet рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП (рдпрд╛ DataTable ) рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдХреНрдпрд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ dotnet/corefx#5609 рдФрд░ рдЯрд╛рдЗрдк рдЕрдЧреНрд░реЗрд╖рдг рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ GetSchemaTable() рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЙрдиреНрд╣реЗрдВ рдХреЙрдореНрдкреЗрдЯ рдХреЗ рд▓рд┐рдП рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВ ... рдХреНрдпрд╛ рдпрд╣ рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИ?

рдХреНрдпрд╛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдкрд╛рд╕ GetSchemaTable() рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрднреА рднреА рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ GetSchema рдХреЗ рдмрд┐рдирд╛) рдФрд░ рдЙрди рдкрд░ рдЧрд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ред рд▓рд╛рдкрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИрдВ, рдореИрдВ рдЕрднреА рднреА рдЙрдирдХреЗ рд╕рд╛рде рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо dnx/core рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред

рдореИрдВ @mythz рд╕реЗ рд╕рд╣рдордд

рд╕рдЪ рдХрд╣реВрдВ рддреЛ, 'рдЖрд░рдЯреАрдПрдо' рд▓реЗрдмрд▓ рдХреА рдУрд░ рдЕрддреНрдпрдзрд┐рдХ рджрдмрд╛рд╡ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ 1.0 рдХреЗ рд╕рд╛рде рдПрдХ рдареЛрд╕ рдПрдкреАрдЖрдИ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рдлрд┐рд░ рд╕реЗ .NET 2.0 рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛: рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рд╕рднреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред

@FransBouma

.NET рдХреЛрд░ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдпреЛрдЧрд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред рддреЛ рдЕрдЧрд░ рдпрд╣ V1 рдХреЗ рд▓рд┐рдП рдХрдЯреМрддреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ 1.1 рднреАред

рдлрд┐рд░ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рд╕рднреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреЛрдИ рдЕрдкрд░рд╛рдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@terrajobst

рддреЛ рдЕрдЧрд░ рдпрд╣ V1 рдХреЗ рд▓рд┐рдП рдХрдЯреМрддреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ 1.1 рднреАред

рд╣рд╛рдБ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо (рдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХрдореА) рдХреЗ (рджреВрд░рдЧрд╛рдореА) рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ Microsoft рдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╣рдо рд╣реИрдВред рдЕрдм рддрдХ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рд╕реА рдЙрджрд╛рд╕реАрдирддрд╛ рджреЗрдЦреА рд╣реИред рдирдП рдврд╛рдВрдЪреЗ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдирдП рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдл рдХрдорд░реЗ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реИред

рдХреЛрдИ рдЕрдкрд░рд╛рдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рджреЗрдЦрд┐рдП, рдКрдкрд░ рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рд╣реИ: рдЖрдк рд╡рд╣ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рдореБрдЭреЗ рдХрд░рдирд╛ рд╣реИред рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдирд┐рдкрдЯ рдЪреБрдХрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд╕рдЪреЗрдд рдХрд░ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдЖрдк рд╡рд╣реА рдЧрд▓рддреА рди рдХрд░реЗрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ 21 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред рдореИрдВрдиреЗ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдпреБрджреНрдз-рдХрдареЛрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдИрдорд╛рдирджрд╛рд░ рд╕рд▓рд╛рд╣ рджреАред рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рд╣рд▓реНрдХреЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рд░ рд╕реЛрдЪреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рджреВрд░рдЧрд╛рдореА рд╣реИрдВ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛: рд╣рдореЗрдВ рдЗрдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд╣реАрдВред

рдПрдХ рдЧрд▓рддреА рднреА рдмрд╛рдж рдореЗрдВ рдареАрдХ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рдпрд╣ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИ, рд╣реИ рдирд╛?

рдЖрдк рд▓реЛрдЧ рдУрд╡рд░рд░рд┐рдПрдХреНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдкреБрд░рд╛рдиреЗ .NET рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реЛрдВрдЧреЗред

рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рдХреЛрд░рдХреНрд▓рд░ рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде, рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛрддрд╛ рд╣реИред рдПрдПрд╕рдкреАрдПрдирдЯреА рдПрдорд╡реАрд╕реА 5 рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдПрдорд╡реАрд╕реА 4 рдпрд╛ 3 рдореЗрдВ рдмреИрдХрдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдХреЛрдИ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИред

рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ @terrajobst рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИред

@nvivo рдХреГрдкрдпрд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ _I_ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж @FransBouma рдореБрдЭреЗ рдореЗрд░реА рдЬрдЧрд╣ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╕реЛрдЪрдирд╛ рдореЗрд░реА рдЧрд▓рддреА рдереА рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭрд╕реЗ рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдореЗрд░реЗ рдХрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдореЗрд░реЗ рдХрд╛рдо рдпрд╛ рдЙрди рдЪреАрдЬреЛрдВ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдк рдЬреИрд╕реЗ рдЧрд░реАрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЧреНрд░рд╣ рдкрд░ рдкреВрд░реА рдореЗрд╣рдирдд рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдк рдЬреИрд╕реЗ рд▓реЛрдЧ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣реИрдВред рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рд╣рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ (рдФрд░ рдмрд╛рд░-рдмрд╛рд░) рдмрддрд╛рдПрдВ рдХрд┐ _рдЖрдк_ рдХреЛ рдФрд░ рдХрд┐рддрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @FransBoumaред

_sigh_ рдореИрдВ рд╡рд╣ рд╕рдм рдХрд╣рд╛рдБ рдХрд╣реВрдБ? рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреГрдкрдпрд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдХрдо рдордд рдЖрдВрдХреЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк 'рдЖрдк рдЕрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ' рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдУрд╡рд░рд░рд┐рдПрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред 'рдЖрдкрдХреЛ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ' рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ: _me_ рдХреЗ рдкрд░рд┐рдгрд╛рдоред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВ, рдореИрдВрдиреЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИред рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдпрд╣ 'рдУрд╡рд░рд░рд┐рдПрдХреНрдЯрд┐рдВрдЧ' рд╣реИред

рдЬреЛ рдХреБрдЫ рднреА рд▓реЗрдХрд┐рдиред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЙрддреНрддрд░ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╣реИрдВ ред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрддреНрддрд░ рд╣реИ: рдЗрдВрдЯрд░рдлреЗрд╕ .NET рдХреЛрд░ 1.0 рдкрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ .NET рдкрд░ рдореМрдЬреВрдж рдХреБрдЫ рдЕрд▓рдЧ рд░реВрдк рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@nvivo рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдпрдВ рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

@terrajobst рдХреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрджреНрдпрддрди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛/рд╕рдордпрд░реЗрдЦрд╛ рд╣реИ? рдФрд░ рдЖрдЧреЗ рдЪрд▓рдХрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдЖрдЗрдЯрдо рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рджреЗрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ?

рдЖрдЗрдП рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЬрд╡рд╛рдм "рдЖрдЗрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рди рдХрд░реЗрдВ" рдирд╣реАрдВ рдерд╛ред рдЬрд╡рд╛рдм рдерд╛ "рдЖрдЗрдП рдЙрдиреНрд╣реЗрдВ рдмреЗрдирдХрд╛рдм рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬреЗрдВ рд▓реЗрдХрд┐рди рдЖрдЗрдП рд╕реЛрдЪреЗрдВ рдХрд┐ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ"ред

рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЗрддрдиреА рджреЗрд░ рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рднреАрддрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рдПрдХ рдЦрд╛рд▓реА рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд░рдЯреАрдПрдо рдХреА рд╕рдордп рд╕реАрдорд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбреЗрдЯрд╛рдЯреЗрдмрд▓/рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкреАрдЫрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо v1 RTM рджреНрд╡рд╛рд░рд╛ System.Data.Common рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ; SqlClient рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ v1 рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП @YoungGah thx, рдпрджрд┐

@mythz рд▓рд╛рдЧрдд рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ/рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣реИред рд▓рд╛рдЧрдд рдиреНрдпреВрдирддрдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЪреАрдЬреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ: рдореБрд╕реНрдХрд╛рди:

рд╣рдордиреЗ System.Data.Common рдореЗрдВ .Net CoreFX рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝реЗ рд╣реИрдВ

рдЖрдИрдбреАрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░
рдЖрдИрдбреАрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЧреНрд░рд╣
рдЖрдИрдбреАрдЯрд╛ рд░реАрдбрд░
IDataRecord
рдЖрдИрдбреАрдмреАрдХрдорд╛рдВрдб
рдЖрдИрдбреАрдмреА рдХрдиреЗрдХреНрд╢рди
рдЖрдИрдбреАрдмреАрдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░
рдЖрдИрдбреАрдмреА рд▓реЗрди-рджреЗрди

рдпрд╣ рдкреАрдЖрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ https://github.com/dotnet/corefx/pull/6359

@ рд╕реМрд░рдн 500 рдмрдврд╝рд┐рдпрд╛ рд╕рд╛рдорд╛рди, thx!

:+1:

:+1:

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛; рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рд╣реИ? рдЖрд░рд╕реА3?

реирел рдлрд░рд╡рд░реА реирежрезрем рдХреЛ режреи:релрек рдмрдЬреЗ, рд╕реМрд░рдн рд╕рд┐рдВрд╣ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣рдордиреЗ System.Data.Common рдореЗрдВ .Net CoreFX рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝реЗ рд╣реИрдВ

рдЖрдИрдбреАрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░
рдЖрдИрдбреАрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЧреНрд░рд╣
рдЖрдИрдбреАрдЯрд╛ рд░реАрдбрд░
IDataRecord
рдЖрдИрдбреАрдмреАрдХрдорд╛рдВрдб
рдЖрдИрдбреАрдмреА рдХрдиреЗрдХреНрд╢рди
рдЖрдИрдбреАрдмреАрдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░
рдЖрдИрдбреАрдмреА рд▓реЗрди-рджреЗрди

рдпрд╣ PR dotnet/corefx#6359 https://github.com/dotnet/corefx/pull/6359 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/corefx/issues/3480#issuecomment -188577701ред

рд╕рд╛рджрд░,

рди рдШреБрд▓рдиреЗрд╡рд╛рд▓реА рддрд▓рдЫрдЯ

рдЬреИрд╕рд╛ рдХрд┐ рдкреАрдЖрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдПрд╕рд┐рдВрдХреНрд╕ рддрд░реАрдХреЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ ADO.NET 1.1 рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ ado.net рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП async рд╡рд┐рдзрд┐рдпрд╛рдБ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛, рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИрдВ
рд╡рд┐рдХрд╛рд╕ред

рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ .NET 4.5 рд╕реЗ async рд╡рд┐рдзрд┐рдпреЛрдВ рд╕рд╣рд┐рдд, рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ, рдЬреИрд╕реЗ DbTrabsaction.CommitAsync рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдкреНрд░рджрд╛рддрд╛ рдиреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рдЬреИрд╕реЗ CommitAsync рдХреЛ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬреЛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рдЗрдВрдЯрд░рдлреЗрд╕ рдареАрдХ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрде рдЕрднреА рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред

рдПрд╕рд┐рдВрдХреНрд╕ рдореЙрдбрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЙрдбрд▓ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ, рдЕрдЧрд░ рдЖрдк рдПрд╕рд┐рдВрдХреНрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЗрдВрдЯрд░рдлреЗрд╕ рд░рдЦрдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред async API рдХреЗ рд▓рд┐рдП рдирдП рдмрдирд╛рдПрдБред

рдпрджрд┐ .NET рдЯреАрдо рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ API рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ API рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕реЗ ADO.NET рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреЛрдИ рд╡рд┐рд░рд╛рд╕рдд рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдореБрджрд╛рдп рд╕реЗ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ dnx рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдпрд╛рдиреА рд╕реНрд╡рддрдВрддреНрд░ рдкреИрдХреЗрдЬред

:+1: рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░, рдЕрдЪреНрдЫрд╛ рд╕рдордЭреМрддрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╣ рдпрд╣рд╛рдБ _рд╕рдВрдкреВрд░реНрдг_ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдареАрдХ рд░рд╣реЗрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреЛрд░реНрдЯрд┐рдВрдЧ рджрд░реНрдж рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрд╕рд┐рдВрдХреНрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛, рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИрдВред

рдореИрдВ рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд░реВрд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ (рдЬрд┐рд╕реЗ рдЖрдЬ рдХреЛрдИ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдПрдХ рдирдпрд╛ рдлреАрдЪрд░ рд╣реЛрдЧрд╛ред рд╣рдо рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред IDbReaderAsync рдпрд╛ рдХреБрдЫ рдкрд╛рдЧрд▓ рдЖрдИрдПрдордУ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рд╣реИред

рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ _not_ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рд┐рдВрдХ рд░реИрдкрд░ рд╣реИ - рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЦрд░рд╛рдм рдФрд░ рдмреЗрдХрд╛рд░ рд╣реИред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рддреЛ рдРрд╕рд╛ рд╣реА рд╣реЛ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ: рд╡реИрд╕реЗ рднреА рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдареАрдХ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рд╣реЛ рдпрд╛ рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдордЬрдмреВрдд рдерд╛ред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ async рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдБред рдЬреЛ рдореИрдВ рдареАрдХ рдирд╣реАрдВ рд╣реВрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ ADO.NET рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИ) рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрд╣реАрдВ рднреА рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдлрд┐рд░, рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ...

рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рд┐рдВрдХ рд░реИрдкрд░ рд╣реИ - рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЦрд░рд╛рдм рдФрд░ рдмреЗрдХрд╛рд░ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣реА рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рджрд╛рддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдВрднрд╡рдд: рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢реЛрд░ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреАрдЖрдИ рд░рд╣рд╛ рд╣реИред

1.1 рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдПрд╕рд┐рдВрдХ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рд╢реВрдиреНрдп рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛, рдЬреЛ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реЛрдЧрд╛ред рд╕рдордЭреМрддрд╛ рджреЛрдиреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЖрдЬ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдХреЛрдб async apis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдЖрдЬ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдХреЛрдб async API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдмрд╣реБрдд рдХрдареЛрд░ рдШрд╛рд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред Async рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╕рдВрдХреНрд░рд╛рдордХ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрд╕рд┐рдВрдХ рдЙрдкрднреЛрдХреНрддрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдирдХреЗ рдХреЛрдб рдХреЗ _ton_ рдХреЛ рднреА рдПрд╕рд┐рдВрдХ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╕рд┐рдВрдХ -> рд╣рд░ рдЬрдЧрд╣ Async рднреА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧрддрд┐рд░реЛрдз рдФрд░ рджрдХреНрд╖рддрд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╕рд╛рд▓реЛрдВ рддрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреЛрдиреЛрдВ рдПрдкреАрдЖрдИ рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ: рдЪрд▓реЛ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдФрд░ рдЕрднреА рддрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдирдП рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдпрд╛ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рджреЗрд░реА рди рдХрд░реЗрдВред рд╣рдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ/рдирдП рд╕реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд┐рдЫрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдПрд╕рд┐рдВрдХреНрд╕ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1.1 рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрднрдЧ рд╢реВрдиреНрдп рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛

рдЖрдк рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡реЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЖрдЬ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдХреЛрдб async apis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ... рдЗрд╕ рддрдереНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐ рд╣рдо рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рд╡рд┐рд╢реЗрд╖рдХрд░ рд╕рдордп) рд╕реЗ рд╡рд┐рд╡рд╢ рд╣реИрдВред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдХреБрдЫ рднреА _рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ_ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред рдореЗрдЬ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрд╕ рдЕрднреА рддрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдПрд╕рд┐рдВрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдПрдХ рд╕реНрдкреЗрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдЖрдк рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡реЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

.NET 4.5 рдиреЗ рдкреНрд░рджрд╛рддрд╛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреАред рдпрд╣ рд▓рдЧрднрдЧ 4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ 2012 рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП ADO.NET рдкреНрд░рджрд╛рддрд╛ API рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд░рд╣рд╛ рд╣реИред Entity Framework 6 (2013 рдХреЛ рдЬрд╛рд░реА) рд╕рднреА рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ async API рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

Async рд╡рд┐рдзрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдХреЗ рд▓рд┐рдП ADO.NET рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ .NET рдХреЛрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЪрд┐рд▓реНрд▓рд╛рдПрдВрдЧреЗред рдореЗрд░реЗ рдкрд╛рд╕ _legacy code_ рд╣реИ рдЬреЛ ADO.NET рдореЗрдВ async рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рд╡рдХрд╛рд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЪреВрдВрдХрд┐ рд╡реЗ ADO.NET рдХрд╛ _рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ API рдкрд░ рднреА рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рд▓реЛрдЧ async API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХрд┐ _рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкрд╣рд▓реЗ_ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЕрдВрдд рдореЗрдВ, рдЕрдиреБрд░реЛрдз
рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛;
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ _рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рдиреА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрддрд╛ рд╣реИ_ред
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _extension рд╡рд┐рдзрд┐рдпреЛрдВ_ рдФрд░ . рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ
рд╕рд╛рд░ рдЖрдзрд╛рд░-рдкреНрд░рдХрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ, рд▓реЗрдХрд┐рди ... рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рдФрд░ рдирд╣реАрдВ
рджрд░реНрдж рдХреЗ рд▓рд╛рдпрдХ рдЖрдИрдПрдордУред

рдЗрд╕рд▓рд┐рдП; рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг: рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ async рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкреАрдЫреЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛
рдЗрдВрдЯрд░рдлреЗрд╕, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕ рдПрдХ рдЪреАрдЬ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЪрд╛рд╣рддреЗ рдереЗ
рдЬрдЧрд╣ред рдпрджрд┐ рдЖрдк async рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдЖрдкрдХреЛ рдмреЗрд╕-рдХреНрд▓рд╛рд╕ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рд╡рдХрд╛рд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЪреВрдВрдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ADO.NET рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ API рдкрд░ рднреА рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк рдЗрди ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИред рдпреЗ _new_ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдпреЗ _рдореМрдЬреВрджрд╛_ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдареЛрд╕ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред

@nvivo рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЖрдкрдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдореИрдВ _interface_ API рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ - рд╡реЗ рдХрднреА рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рдереЗред рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рд╕рдорд╛рди *Async рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ - рдХреНрдпрд╛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдЬреЛ рдЧреБрдо рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рддрд░реНрдХ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ... рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдкрдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдзрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╕рд┐рдВрдХ рдкрд░ рдПрд╕рд┐рдВрдХ) рдкреВрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рдЯреНрд░реЗрдбрдСрдл рд╣реИрдВред рд▓реЗрдХрд┐рди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рджреЛрдиреЛрдВ рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╛ рддреЛ рд╡реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓рд╛ рд╣реИ) рдмреНрд░реЗрдХ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдБ рдордВрдбрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдпрд╣ рдХрд╣рд╛ рдерд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ _just_ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрдЧрддрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЖрдзрд╛рд░ рд╡рд░реНрдЧ 2005 рд╕реЗ ADO.NET рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ API рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣реА рдкреНрд░рджрд╛рддрд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдИрдбреАрдмреАрдХреЙрдореИрдВрдб рдпрд╛ рдЖрдИрдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЛрдЬ/рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбрд╛рдЙрдирд╕рд╛рдЗрдб рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк ifdefs рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдирдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╡реИрд╕реЗ рднреА рдХреЗрд╡рд▓ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╡реЗ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдП рдирд╣реАрдВред рдпрджрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ рдЬреЛ рд╡реЗ рдереЗред Async рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд░реНрддрдорд╛рди API рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИрдВ рдФрд░ рдЗрд╕реА рджрд┐рд╢рд╛ рдореЗрдВ Microsoft рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рд╕реНрд░реЛрдд рд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рдмрд╕ рдФрд░ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред

@mgravell

рдпрджрд┐ рд▓реЛрдЧ рдПрд╕рд┐рдВрдХреНрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкрд╣рд▓реЗ_ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдиреБрдмрдВрдз рд╣реИрдВ, .NET рдХреЛрд░ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЕрдиреБрдмрдВрдз рдХреЛ рдПрдкреАрдЖрдИ рдХреЗ рдкреБрди: рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

.NET рдХреЛрд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдмрдВрдз рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рд╡реИрд╕реЗ рднреА рдЧрд╛рдпрдм рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдпрд╣ рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рддреЛ рд▓реЛрдЧ рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡реИрд╕реЗ рднреА рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдЧрд░ рд╡рд╣ рд╕рдм рдЯреАрдо рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдареАрдХ рд╣реИ .. рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЖрдИрдПрдордУред

рдЖрдИрдбреАрдмреАрдХреЙрдореИрдВрдб рдпрд╛ рдЖрдИрдбреАрдмреАрдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЛрдЬ/рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбрд╛рдЙрдирд╕рд╛рдЗрдб рдирд╣реАрдВ рд╣реИред

рдЭреВрдард╛ред рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдП рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк ifdefs . рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИрдВ

рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ ifdefs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рджреЗрд╡ рдЕрдиреБрднрд╡ рдФрд░ рдПрдХ рдЧреИрд░-рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╣реИ, рдЕрд░реНрдерд╛рдд рдРрд╕рд╛ рдХреЛрдИ рд╕рдлрд▓ рдЙрддреНрдкрд╛рдж рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ #defs рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХреЛрдб рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдпреЗ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдпреЗ рдмрд╣рд╛рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдкреАрдЖрдИ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИрдВ, рди рдХрд┐ рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ред рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдк рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЕрдм рдХреЛрдИ рдирдпрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореМрдЬреВрджрд╛ ADO.NET рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЖрд░рд╛рдо рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рдереНрд░реЗрдб рд╕реЗ рдХреЗрд╡рд▓ DataTable рдФрд░ GetSchemaTable() рдЕрдкрдбреЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддреБ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ - рдЬреЛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдХреЛ рд╕реНрдкреИрдо рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ред

@mythz рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИрдВред

рдмрд╕ рдПрдХ рдФрд░ рдУрдЖрд░рдПрдо рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЛрдб рдЧрдВрдз рд╣реЛрддреЗ рд╣реИрдВред рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЕрддрд┐рднрд╛рд░рд┐рдд рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЕрдВрдЧреВрдареЗред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЛрдб рдЧрдВрдз рд╣реЛрддреЗ рд╣реИрдВ

@psibernetic рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдХрдерди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдореЗрд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХреЛрдб рдЧрдВрдз рдХреНрдпрд╛ рд╣реИ?

@psibernetic

рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣рдореЗрдВ рдЕрдиреБрдмрдВрдз рджреЗрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рд╣рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрдд рдФрд░ рдПрдХ рдЕрдЪреНрдЫреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрдк-рд╡рд░реНрдЧ рд╣реИрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЙрд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рд╣реИ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди, рдХрдорд╛рдВрдб, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдареЛрд╕ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╕рд╛рд░ рдПрдкреАрдЖрдИ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдордЬрдмреВрдд рдЖрдИрдПрд╕ рдП рд╕рдВрдмрдВрдз рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ IDbConnection рдпрд╛ IConnection рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓рдЧрднрдЧ рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рджреГрд╢реНрдп рдирдП рд╡рд░реНрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рдХреЗрд╡рд▓ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕рдорд╛рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ "рдбреБрдкреНрд▓рд┐рдХреЗрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрд╛рдо (рдЕрдирд╛рд╡рд╢реНрдпрдХ) рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рджреЛ рд╕рдорд╛рди рдЕрдореВрд░реНрддрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рдареЛрд╕ рд▓рд╛рдн рдпрд╛ рдкрд░рд┐рджреГрд╢реНрдп рджреЗрдЦрддреЗ рд╣реИрдВ? рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн _over_ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЬрд┐рд╕ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреБрд░рд╛рдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рдереЗ рддреЛ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

@eocampo рдЖрдк рд╕рд╣реА рд╣реИрдВ рдХрд┐ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╢рд╛рдпрдж "рдкрд░реНрдпрд╛рдкреНрдд рдкрд░реНрдпрд╛рдкреНрдд" рдЕрдореВрд░реНрддрддрд╛ рдФрд░ рдЕрдиреБрдмрдВрдз рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╕рдВрдХреАрд░реНрдг рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ IAsyncCommand рдФрд░ рдкрд╕рдВрдж рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд▓рдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдврд╛рдВрдЪреЗ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рд╕рдордп рдкрд░ рднрдпрд╛рдирдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдпрд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдХрдо рдореМрдХреЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@davkean рдХреЛрдб рдЧрдВрдз рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдирд╣реАрдВ, рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреВрд░реЗ рдЖрдзрд╛рд░ рд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ IDataReader рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦрдирд╛ рдпрд╛рдж рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреИрд╢ рдпрд╛ рдореЗрдореЛрд░реА рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ DbDataReader рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдирд╛рдо рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рдирд╣реАрдВ рд╣реИред

рдбреЙрдЯ рдиреЗрдЯ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╛рд▓рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ?

рдбреЙрдЯ рдиреЗрдЯ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╛рд▓рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ?

@psibernetic рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MSDN рд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЛ рдПрдХ рджрд╢рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╡рд╣ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдХрдо рд╕реЗ рдХрдо .Net Framework 2.0 рд╕реЗ рдмрд╣реБрдд рдЖрдо рд╣реИред

рд╕рд╛рде рд╣реА рдпрд╣ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рд╕реЗ .Net рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрджрд░реНрдн рд╣реИ:

http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613

рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХрдард┐рди рдЪрд░реНрдЪрд╛ рдЕрдм рд▓рдЧрднрдЧ рджреЛ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд╣реИ:

рдП) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗрд╡рд▓ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдпрд╛ рдХреНрдпрд╛ рд╣рдо рдХреНрд▓реАрдирд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╢реБрд░реВ" (рдмреНрд░реЗрдХрд┐рдВрдЧ рдХреЛрдб) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
b) рд╣рдо рдкреВрд░реНрдг .NET рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдиреБрдХреВрд▓ рди рд╣реЛрдиреЗ рдХреА рдХреАрдордд рдкрд░ рдПрдХ рдЖрдзреБрдирд┐рдХ рдФрд░ рд╕реНрд╡рдЪреНрдЫ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдкрд░ рдиреЗрдЯ рдХреЛрд░ рдФрд░ рдкреВрд░реНрдг рдХреЛрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ [рд╕рдмрд╕реЗ рдирд┐рдореНрди рд╕реНрддрд░ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕рдВрдЧрддрддрд╛ рдирд╣реАрдВ])

рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рдкрд╕рдВрджреАрджрд╛ рдЕрдиреБрдмрдВрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИрдВ, рддреЛ _interfaces_ рдХреЛ рдХреЗрд╡рд▓ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ @nvivo рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ .Net 2.0 рдХреЗ рдмрд╛рдж рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдмрдВрдз рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо _could_ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди @mythz рдФрд░ @mikeobrien рдиреЗ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдХрдард┐рди рдбреЗрдЯрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред 1.1 рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ред

рд╕реНрдкреИрдорд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдпрд╣рд╛рдВ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд▓рдВрдмреА рдмрд╛рддрдЪреАрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╖рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкрд░ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рджреЛ рдпрд╛ рддреАрди рдирдП рдмрдирд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдореБрджреНрджреЗред рдореИрдВ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рд╡ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрди рд╕рднреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╢реЛрд░ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрд░рд╛ рднреА) рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдмрд╛рдд рдХрд░реЗрдВ рддреЛ, рдХреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдбреЗрдЯрд╛ рдЬреЗрдиреЗрд░рд┐рдХ? рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ System.Data рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ .NET 1.1 рд╕реЗ рдЖрдЧреЗ рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ IEnumerable рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .AsEnumerable() рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдЬреИрд╕реЗ рд╣реИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИредрдбреЗрдЯрд╛рдЯреЗрдмрд▓ рд╕реЗ рдмрд╛рд╣рд░ред DataRowCollection рдЬреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЛ рдЬреЗрдиреЗрд░рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм 2.0 рдХреЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рдкрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реНрдЯрдм System.Data рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк рд░реАрдбрд╛рдпрд░реЗрдХреНрд╢рди рд╣реЛрдЧрд╛? рдореБрдЭреЗ ODP.NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдбреЙрдЯрдиреЗрдЯ/рдХреЛрд░рдПрдлрдПрдХреНрд╕#7874

@mgravell @ploeh "рд░рд┐рдХрд╕реЙрд░рд╕" рдирд┐рд╣рд┐рдд рдЯрд╛рдЗрдкрдХреНрд▓рд╛рд╕ рдХреНрд╖рд┐рддрд┐рдЬ рдкрд░ рдереЗ (рдПрдл # рдХреЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо, рд╕реА # рдпрд╛ .NET рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ https://news.ycombinator.com/threads?id=Rickasaurus)ред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА .NET рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛?

рдореИрдВ рд╣рд╛рд╕реНрдХреЗрд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг IDbConnection , IDbConnectionAsync , рдФрд░ рдХрд┐рд╕реА рднреА рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рд╛рдЭрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрд░реЛрдд рдХреЛ рддреЛрдбрд╝реЗ рдпрд╛ рдмрд╛рдЗрдирд░реА рд╕рдВрдЧрддрддрд╛, рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛ред рдпрд╣ рдЖрд╕рд╛рди рдирдХрд▓реАрдкрди рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдПред

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╕рдордЭ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ .NET рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

GitAntoinee picture GitAntoinee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jchannon picture jchannon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noahfalk picture noahfalk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matty-hall picture matty-hall  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sahithreddyk picture sahithreddyk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ