2017-06-09 2 views
0

Ich habe ein einfaches Modell Config und MyValue:UPDATE 00.59 Beziehung EntityState.Modified .net

public Class Config 
    Public Property ConfigId as Integer 
    Public Property Name As String 
    Public Property MyValue as MyValue 
    Public Property ... 
end class 

Public Class MyValue 
    Public Property MyValueId as Integer 
    Public Property Value as Decimal 
    Public Property Info As String 
    Public Property ... 
end class 

Ich mag meine Config in der Datenbank aktualisieren, nach der Änderung: - Name Text in TextBox (Bindung Ansichtsmodell) - MyValue Objekt in ComboBox (Bindungsansichtsmodell) - andere Werte mit

Public Function SaveExececute() As String 
    ObjConfig.Name = SomeString 'FAKE All is binded' 
    ObjConfig.MyValue = SomeObject 'FAKE All is binded' 
    ' ... ' 

Using ctx As New DbContext 
    Try 
     ctx.Entry(ObjConfig.MyValue).State = Entity.EntityState.Modified 
     ctx.Entry(ObjConfig).State = Entity.EntityState.Modified 
     ctx.SaveChanges() 
     Return "UPDATED" 
    Catch ex As Exception 
     Return ex.Message 
    End Try 
End Using 
End Sub 

IMAGE DEMO

Bindungs 10

alle Werte in der Datenbank geändert, außer meinem neuen MyValue mit der ID 2 (MyValue_MyValueId = 1 in meiner SQL-Datenbank), die Disconnect-Methode erkennt das neue Objekt MyValue nicht, wie fügt man das neue Objekt MyValue an?

Antwort

0

Ich bin nicht gut in Vb.Net, also werde ich versuchen (ich verwende C#)

Ihre ObjConfig.MyValue und Ihre ObjConfig sind nicht im gleichen Kontext Ihrer ctx weil Sie öffnen dann in verschiedenen Kontexten

es zu beheben Sie wie folgt, verfahren sollte:

Using ctx As New DbContext 
    Try 

     Dim ObjConfig as New ObjConfig() = ctx.ObjConfigEntity.Find(ObjConfig.Id) ''Or seach by you data 
     Dim MyValue as New MyValue() = ctx.MyValueEntity.Find(ObjConfig.MyValue.Id) 

     ctx.Entry(MyValue).State = Entity.EntityState.Modified 
     ctx.Entry(ObjConfig).State = Entity.EntityState.Modified 

     ctx.SaveChanges() 

     Return "UPDATED" 
    Catch ex As Exception 
     Return ex.Message 
    End Try 
End Using 

Zusammengefasst Sie keine Daten verwenden können, die aus using geladen wurde Ihre offenen Kontext innerhalb using, beca zu aktualisieren verwenden sie sind unterschiedlich

+0

in der Tat die 2 Zeilen: – obxsolo

+0

Danke, aber nicht funktioniert, in der Tat die 2 ersten Zeilen sind Fälschung auf ausführen Methode, das Modell ist vollständig mit dem XAML verbunden, die "ObjConfig.MyValue" ist ein SelectedItem. Mit Break debug enthält mein Object alle neuen Werte, nur die Eigenschaft MyValue ändert sich nicht. (bearbeiten mit Bild, zur Visualisierung) – obxsolo

Verwandte Themen