2016-04-06 14 views
0

Ich versuche, die Entität Daten mit allgemeinen Methoden von Lichtschalter, die Aktualisierung ist zu speichern. Unten ist der folgende Code. Ich kann nicht herausfinden, was mir fehlt. Es gibt keinen Fehler im Code oder in der Benutzeroberfläche. Es ist nur, dass nichts gespeichert wird.Lightswitch Updating() Methode speichert keine Daten in 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

Du eigentlich nichts zu tun, und Sie anrufen DiscardChanges(). Wahrscheinlichkeiten sind Ihre tatsächliche DataSource ist nicht aktualisierbar. Als Erstes sollten Sie überprüfen, ob jede Tabelle in Ihrer Datenbank über einen Primärschlüssel verfügt. Stellen Sie dann sicher, dass alle ForeignKeys für einen PrimaryKey definiert sind. Aktualisieren Sie dann Ihre LightSwitch-DataSource. Löschen Sie dann die obige Updating-Methode, da sie tatsächlich nichts tut. – Kris

+0

Hallo @Kris Meine DataSource ist aktualisierbar. Ich habe überprüft, dass jede Tabelle in meiner DB eine PK hat. Auch alle FKs sind zurück auf PK definiert. Ich habe die LS-Datenquelle aktualisiert. Aber ich kann die Updating-Methode nicht löschen. Weil ich versuche, die Daten direkt in einer Ansicht zu speichern. TimeDataExpires-Eigenschaft in meiner Ansicht erfordert Daten wie diese gespeichert werden. Können Sie mir bitte vorschlagen, wie kann ich C# Code hinzufügen, um die Daten auf der Entität zu aktualisieren –

+0

HALLO @Kris, Wenn ich die DiscardChanges() Zeile entfernen, dann würde dies mir eine Fehlermeldung sagen, dass "Update oder Einfügen der Ansicht oder Die Funktion 'dbo.viewFamilyProcessData' ist fehlgeschlagen, weil sie ein abgeleitetes oder konstantes Feld enthält. " –

Antwort

0

Die Lösung dieses Problems endlich dazu kam:

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(); 
     }} 
Verwandte Themen