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

У меня есть модель Entity Framework, основанная на базе данных.В базе данных есть таблица строк с матрицами, и мое приложение должно отображать и выполнять CRUD-операции над ней.Для простоты я хочу создать сущность для отслеживания определенного набора значений и внесения изменений в базу данных.Могу ли я подключить эту сущность к базе данных, чтобы она отслеживала каждое внесенное мной изменение?

Следующая сущность принимает список значений и преобразует их в плоский объект.В конечном счете, я хотел бы изменить конструктор для прямого доступа к базе данных (с учетом нескольких дополнительных параметров), а затем иметь возможность обновлять конкретные значения для каждого свойства при сохранении.

Вот мой пример сущности:

public class ServiceAdjustment
    {
        public string UNIT { get; set; }
        public string INFIND { get; set; }
        public string VASTREET { get; set; }
        public string VALNOSTR { get; set; }
        public string VALSEWER { get; set; }
        public string VALWATER { get; set; }
        public string VALCURB { get; set; }
        public string VALSWK { get; set; }
        public string STSZ { get; set; }
        public string STLSM { get; set; }
        public string STND_DPT { get; set; }
        public string VALDELTA { get; set; }
        public string VALNABLA { get; set; }
        //constructor
        public ServiceAdjustment(List<LANDADJT> landadjts)
        {
            UNIT = landadjts.Where(x => x.TABLE_NAME == "UNIT").Select(x => x.CODE).FirstOrDefault<string>();
            INFIND = landadjts.Where(x => x.TABLE_NAME == "INFIND").Select(x => x.CODE).FirstOrDefault<string>();
            VASTREET = landadjts.Where(x => x.TABLE_NAME == "VASTREET").Select(x => x.CODE).FirstOrDefault<string>();
            VALNOSTR = landadjts.Where(x => x.TABLE_NAME == "VALNOSTR").Select(x => x.CODE).FirstOrDefault<string>();
            VALSEWER = landadjts.Where(x => x.TABLE_NAME == "VALSEWER").Select(x => x.CODE).FirstOrDefault<string>();
            VALWATER = landadjts.Where(x => x.TABLE_NAME == "VALWATER").Select(x => x.CODE).FirstOrDefault<string>();
            VALCURB = landadjts.Where(x => x.TABLE_NAME == "VALCURB").Select(x => x.CODE).FirstOrDefault<string>();
            VALSWK = landadjts.Where(x => x.TABLE_NAME == "VALSWK").Select(x => x.CODE).FirstOrDefault<string>();
            STSZ = landadjts.Where(x => x.TABLE_NAME == "STSZ").Select(x => x.CODE).FirstOrDefault<string>();
            STLSM = landadjts.Where(x => x.TABLE_NAME == "STLSM").Select(x => x.CODE).FirstOrDefault<string>();
            STND_DPT = landadjts.Where(x => x.TABLE_NAME == "STND_DPT").Select(x => x.CODE).FirstOrDefault<string>();
            VALDELTA = landadjts.Where(x => x.TABLE_NAME == "VALDELTA").Select(x => x.CODE).FirstOrDefault<string>();
            VALNABLA = landadjts.Where(x => x.TABLE_NAME == "VALNABLA").Select(x => x.CODE).FirstOrDefault<string>();
        }
    }

Как подключить это к базе данных, чтобы при сохранении свойства UNIT обновлялось привязанное к нему значение в таблице LANDADJT?

1 Ответ

0 голосов
/ 22 января 2019

см. Это:

 dbcontext.YourEntity.Add(new ServiceAdjustment(<yourlandadjtsVariableHere>));
 dbContext.SaveChanges();

Если вам нужно отследить сущность, вы можете использовать

var entity = new YourEntityClass();
var entity.PrimaryKeyColumn = 1234;
context.YourDbSet.Attach(entity); 

теперь ваша сущность привязана к ChangeTracker. Теперь вы можете изменить любое значение и сохранить его

entity.SomeProp = "John Doe";
dbContext.SaveChanges();

Вы можете проверить состояние вашей сущности по

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