Я новичок в asp.net (использую ядро). Я хочу загрузить объекты из базы данных.Я не хочу непредсказуемого поведения - много раз я вижу, что когда я делаю код, как они советуют, он внезапно отправляет различные операторы DML "за сцену", которые я не могу контролировать (ни SQL, который он генерирует, ни время выполнения) Так что я делаю это «классическим» способом: перетаскивание отключенных объектов с помощью ADO.NET.Мои вопросы: имеет ли смысл приведенный ниже код при работе с последним ядром EF, и есть ли способ автоматически отобразить объекты - то есть, чтобы их свойства были заполнены одинаковыми именами полей - или у меня естьсамому написать код?
/ классический код: вызов хранимого процесса и повторение DataTable /
DataTable tblChecks = new DataTable ();System.Data.SqlClient.SqlDataAdapter da = new SqlDataAdapter ("[pcqa]. [GetSupplierGeneralChecks]", "SERVER = DBDev3; Trusted_connection = yes; database = WarehouseProducts");da.Fill (tblChecks);
List<SupplierGeneralChecksItem> oRet = new List<SupplierGeneralChecksItem>();
foreach (DataRow dRow in tblChecks.Rows)
{
//_context.SupplierGeneralChecksItems.Add(new SupplierGeneralChecksItem(dRow));
oRet.Add(new SupplierGeneralChecksItem(dRow));
}//*but then here below here i connect database field names to properties myself - is there any way to do this automatically? (because what if i got a great many fields?) Thanks*/public SupplierGeneralChecksItem(DataRow dRowSupplierGeneralChecks)
{
SupplierGeneralChecksId = (Int32)dRowSupplierGeneralChecks["SupplierGeneralChecksId"];
SupplierId = (Int32)dRowSupplierGeneralChecks["SupplierId"];
MaxDaysNoLoad = (Int16)dRowSupplierGeneralChecks["MaxDaysNoLoad"];
NumProdsFloor = (Int32)dRowSupplierGeneralChecks["NumProdsFloor"];
NumProdsCeiling = (Int32)dRowSupplierGeneralChecks["NumProdsCeiling"];
PrcntProdsChangeFloor = Convert.ToInt16(dRowSupplierGeneralChecks["PrcntProdsChangeFloor"]);
PrcntProdsChangeCeiling = Convert.ToInt16(dRowSupplierGeneralChecks["PrcntProdsChangeCeiling"]);
//not yet in db: Dscr = dRowSupplierGeneralChecks["Dscr"].ToString();
CheckName = dRowSupplierGeneralChecks["CheckName"].ToString();
}
Итак, чтобы подвести итог - да, это работает, но это правильный и самый быстрый способ сделать это, предполагая, что я хочу полный контроль над всеми взаимодействиями базы данных?