2016-04-13 12 views
0

Meine Benutzerklasse ist wie folgt, wenn ich versuche, den Datensatz unter Verwendung der folgenden Abfrage zu aktualisieren, gibt es eine Ausnahme.Wert des Typs System.String kann nicht in OData-Typ konvertiert werden. [Edm.Guid Nullable = True]

public class User 
{ 
    public User(); 

    public Guid Id { get; set; } 
    public virtual Language Language { get; set; } 
    public Guid? LanguageId { get; set; } 
    public virtual City City { get; set; } 
    public Guid? CityId { get; set; } 
} 

Code

  Guid cityId = new Guid("4B1FCCA6-3E43-44BA-8516-BC693F02E9B5"); 

      await myClient.For<User>() 
      .Filter(t => t.CityId == cityId) 
      .Set(new { LanguageId = languageId }) 
      .UpdateEntryAsync(); 

nachdem ich Ausnahme bin immer oben Update-Anweisung ausführen Unable to convert value of type System.String to OData type [Edm.Guid Nullable=True] myClient ist Simple Odata client

+0

was 'myClient'? Was ist 'userData'? Woher bekommst du den Fehler? – Backs

+0

aktualisierte Frage mit Details – Neo

+0

Was ist der Typ der lokalen Variable 'languageId'? – lencharest

Antwort

1

Anscheinend LanguageId = languageId Sie diesen Fehler geben, weil Guid Typ unterschiedlich ist. Einer ist .net inbuild und einer, den Sie von Ihrem Service-Anruf bekommen. Außerdem glaube ich, languageId hier Zeichenfolge, die das Problem

definiert verursacht Wie hier http://www.odata.org/documentation/odata-version-2-0/overview/

Edm.Guid : Represents a 16-byte (128-bit) unique identifier value. 
+0

danke aber was soll in diesem fall gemacht werden? Wie überprüfe ich? beide sind 'Guid' einzige Sache ist innerhalb der Benutzerklasse CityId ist nullable' public Guid? CityId {erhalten; einstellen; } ' – Neo

+1

auf den zweiten Gedanken, LanguageId = SpracheId ist die Fehlerzeile .. Was ist LanguageId hier? – Nitin

Verwandte Themen