Код ядра EF для заполнения объектов из базы данных - PullRequest
0 голосов
/ 23 марта 2019

Я новичок в 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();
    }

Итак, чтобы подвести итог - да, это работает, но это правильный и самый быстрый способ сделать это, предполагая, что я хочу полный контроль над всеми взаимодействиями базы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...