Lightswitch HTML — добавление внешнего ключа на основе поля даты (C#)

Чего я пытаюсь достичь:

Когда пользователь вводит строку в таблицу (EntryLine), он вводит описание и дату. Теперь в С# при вставке кода EntryLine я могу использовать этот код:

    partial void EntryLine_Inserting(EntryLine entity)
    {

        if (entity.Day == null)
        {
            DateTime getDay = Convert.ToDateTime(entity.EntryDate);                
            entity.Day = getDay.ToString("dddd");

            //entity.Day = getDate
        }

    }

Теперь то, что делает этот код выше, берет дату, введенную пользователем, и просто добавляет день в базу данных, используя метод .ToString (т.е. среда)

в долгосрочной перспективе это будет неэффективно, поэтому есть ли способ связать этот день (среду) с соответствующим полем в таблице Day? а также затем присвоить ему правильный идентификатор? Я бы сделал это, используя приведенный ниже ERD:

  DayName    ID
  Monday      1
  Tuesday     2
  Wednesday   3
  Thursday    4
  Friday      5
  Saturday    6
  Sunday      7

введите здесь описание изображения


person Crezzer7    schedule 09.07.2015    source источник


Ответы (1)


Одним из вариантов может быть использование свойства DayOfWeek следующим образом:

partial void EntryLines_Inserting(EntryLine entity)
{            
    entity.Day = Days_SingleOrDefault((int)entity.EntryDate.DayOfWeek);
}

Для этого требуется, чтобы идентификаторы в таблице Day отражали следующие значения перечисления DayOfWeek:

DayName    ID
Sunday      0
Monday      1
Tuesday     2
Wednesday   3
Thursday    4
Friday      5
Saturday    6

В качестве альтернативы вы можете использовать приведенный ниже подход, основанный на определении соответствующего DayName в вашей таблице Day:

partial void EntryLines_Inserting(EntryLine entity)
{
    var dow = entity.EntryDate.DayOfWeek.ToString();
    entity.Day = Days.Where(d => d.DayName == dow).SingleOrDefault();
}
person Chris Cook    schedule 14.07.2015