2016-04-06 10 views
0

Я пытаюсь сохранить данные сущности, используя Общие методы подсветки, который является обновлением. Ниже приведен следующий код. Я не могу понять, чего не хватает. Ошибка в коде или в пользовательском интерфейсе отсутствует. Просто, что ничего не спасется.Метод Lightswitch Updating() не сохраняет данные в DB

partial void viewFamilyProcessDatas_Updating(viewFamilyProcessData entity) 
    { 

     var AutoAddMissingListing = entity.AutoAddMissingListing; 
     var AutoAddOddLots = entity.AutoAddOddLots; 
     var DefaultFilterValue = entity.DefaultFilterValue; 
     var ExcludeZeroNumberOfUnits = entity.ExcludeZeroNumberOfUnits; 
     //objFamilyProcessData.FamilyID = entity.FamilyID; 
     var IgnoreForPricing = entity.IgnoreForPricing; 
     var LimitEndDate = entity.LimitEndDate; 
     var OffsetFromMaxAsAtDate = entity.OffsetFromMaxAsAtDate; 
     var PrefilterConstituents = entity.PrefilterConstituents; 
     var TimeDataExpires = entity.TimeDataExpires; 

     entity.AutoAddMissingListing = AutoAddMissingListing; 
     entity.AutoAddOddLots = AutoAddOddLots; 
     entity.DefaultFilterValue = DefaultFilterValue; 
     entity.ExcludeZeroNumberOfUnits = ExcludeZeroNumberOfUnits; 
     entity.IgnoreForPricing = IgnoreForPricing; 
     entity.LimitEndDate = LimitEndDate; 
     entity.OffsetFromMaxAsAtDate = OffsetFromMaxAsAtDate; 
     entity.PrefilterConstituents = PrefilterConstituents; 
     entity.TimeDataExpires = TimeDataExpires; 

     //this.DataWorkspace.SolaDBServerData.Details.DiscardChanges(); 
     entity.Details.DiscardChanges(); 



    } 
+0

Вы на самом деле не делает ничего, плюс вы звоните DiscardChanges(). Скорее всего, ваш фактический источник данных не является обновляемым. Первое, что вам нужно сделать, это убедиться, что каждая таблица в вашей базе данных имеет PrimaryKey. Затем убедитесь, что все ForeignKeys определены обратно в PrimaryKey. Затем обновите источник данных Lightwitch DataSource. Затем удалите описанный выше метод обновления, поскольку он фактически ничего не делает. – Kris

+0

Привет @Kris My DataSource является обновляемым. Я проверил, что каждая таблица в моей БД имеет ПК. Также все FK определены в PK. Я обновил LS Datasource. Но я не могу удалить метод обновления. Потому что я пытаюсь сохранить данные непосредственно в представлении. Свойство TimeDataExpires в моем представлении требует сохранения данных таким образом. Не могли бы вы предложить мне, как я могу добавить код C#, чтобы иметь возможность обновлять данные об объекте. –

+0

HI @Kris. Если я удалю строку DiscardChanges(), это даст мне ошибку, в которой говорится, что «Обновить или вставить вид или function 'dbo.viewFamilyProcessData' не удалось, поскольку содержит производное или постоянное поле. " –

ответ

0

Решение это, наконец, пришел к этому:

partial void vwFamilyProcessDatas_Updating(vwFamilyProcessData entity) 
    { 
     if(entity.Details.EntityState.ToString() == "Modified") 
     { 
      var AutoAddMissingListing = entity.AutoAddMissingListing; 
      var AutoAddOddLots = entity.AutoAddOddLots; 
      var DefaultFilterValue = entity.DefaultFilterValue; 
      var ExcludeZeroNumberOfUnits = entity.ExcludeZeroNumberOfUnits; 
      var IgnoreForPricing = entity.IgnoreForPricing; 
      var LimitEndDate = entity.LimitEndDate; 
      var OffsetFromMaxAsAtDate = entity.OffsetFromMaxAsAtDate; 
      var PrefilterConstituents = entity.PrefilterConstituents; 
      var TimeDataExpires = entity.TimeDataExpires; 

      tblFamily objFamily = tblFamilies.Where(f => f.FamilyID == entity.FamilyID).Single(); 
      objFamily.AutoAddMissingListing = AutoAddMissingListing; 
      objFamily.AutoAddOddLots = AutoAddOddLots; 
      objFamily.DefaultFilterValue = DefaultFilterValue; 
      objFamily.ExcludeZeroNumberOfUnits = ExcludeZeroNumberOfUnits; 
      objFamily.IgnoreForPricing = IgnoreForPricing; 
      objFamily.LimitEndDate = LimitEndDate; 
      objFamily.OffsetFromMaxAsAtDate = OffsetFromMaxAsAtDate; 
      objFamily.PrefilterConstituents = PrefilterConstituents; 
      objFamily.TimeDataExpires = TimeSpan.Parse(TimeDataExpires); 

      entity.Details.DiscardChanges(); 
     }}