То, что вы используете DataSets, не означает генерацию кода.Итак, что вы используете / делаете именно для генерации кода?
dataProvider также не подразумевает, что код генерируется.Вы можете получить прямой доступ к своим данным и заполнить свои наборы данных данными самостоятельно.
Например
#region GetPostsFeatured
internal DbDataReader GetPostsFeatured()
{
using (var command = CreateCommandForGetPostsFeatured())
{
DbConnection.Open();
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
}
internal DataSet GetPostsFeaturedDataSet()
{
var adapter = DbProviderFactory.CreateDataAdapter();
adapter.SelectCommand = CreateCommandForGetPostsFeatured();
var ds = new DataSet();
adapter.Fill(ds);
return ds;
}
private DbCommand CreateCommandForGetPostsFeatured()
{
var command = DbConnection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "GetPostsFeatured";
var parameter = DbProviderFactory.CreateParameter();
parameter.DbType = DbType.Int32;
parameter.Direction = ParameterDirection.ReturnValue;
parameter.ParameterName = "@RETURN";
command.Parameters.Add(parameter);
return command;
}
#endregion GetPostsFeatured
В приведенном выше коде используется ядро ADO.NET (что, как я думаю, вы используете какЧто ж).Обратите внимание, что есть два метода
- GetPostsFeatured () - который возвращает DbDataReader
- GetPostsFeaturedDataSet () - который возвращает DataSet
Обратите внимание, как DataSetзаполняется данными из базы данных?
В этом случае я использую поставщик данных MS SQL, но это может быть любой поставщик данных.Все они поддерживают общий набор функций.
Код, который использует раздел строки подключения файла конфигурации и устанавливает соединение и т. Д., Показан ниже
internal partial class DataModule
{
private DbProviderFactory DbProviderFactory { get; set; }
private DbConnection DbConnection { get; set; }
public DataModule()
{
var connectionStringSettings = ConfigurationManager.ConnectionStrings["Orion"];
DbProviderFactory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName);
DbConnection = DbProviderFactory.CreateConnection();
DbConnection.ConnectionString = connectionStringSettings.ConnectionString;
}
}
В моем блоге есть статьяоб инструменте, который я написал, который генерирует код непосредственно из хранимых процедур (весь код, который я вам показал, это сгенерированный код).Также доступен исходный код инструмента, так что вы можете изменить сгенерированный код и все, что пожелаете. Уровень доступа к данным CodeGen