Die Eigenschaften-Ausdruck ist nicht gültig. Der Ausdruck soll darstellen, eine Eigenschaft
Habe ich diese zwei Entitäten
public class Song : IPathHavingEntity
{
public int Id { get; set; }
[Required]
public string Path { get; set; }
[Required]
public virtual Album Album { get; set; }
[Required]
public int TrackNumber { get; set; }
}
public class Album : IPathHavingEntity
{
public int Id { get; set; }
[Required]
public string Path { get; set; }
public virtual IEnumerable<Song> Songs { get; set; }
[Required]
public int AlbumNumber { get; set; }
}
Path
definiert wird, in der IPathHavingEntity
- Schnittstelle.
In my Seed-Methode, die ich möchte hinzufügen eines Songs auf die Songs
Tabelle nur, wenn es nicht vorhanden ist. Aus diesem Grund kann ich überprüfen, dass das album Weg und song-Pfad-Kombination nicht existieren bereits, bevor Sie es so
context.Songs.AddOrUpdate(
s => new { FilePath = s.Path, AlbumPath = s.Album.Path },
new Song { TrackNumber = 1, Path = "01 Intro.mp3", Album = one });
Das problem ist, ich bekomme diese Fehlermeldung
The properties expression 's => new <>f__AnonymousType0``2(FilePath =
s.Path, AlbumPath = s.Album.Path)' is not valid. The expression should
represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'. When specifying multiple properties use an anonymous type: C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New With { t.MyProperty1, t.MyProperty2 }'.
Was ist das problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kämpfte ich mit einem ähnlichen Problem für mehrere Stunden und war heute endlich in der Lage, es zu beheben. Ich bin mir nicht sicher, ob dies für Ihre situation, aber es ist eine Untersuchung Wert.
Kann das problem verursacht werden, durch die
Album
Eigentum IhrerSong
Person gekennzeichnet wird alsvirtual
. Ich bin nicht ein EF-Experte, aber ich glaube nicht, dass Sie es mag, dassvirtual
Eigenschaft bei der Initialisierung von anonymen Typ. Fügen Sie eine nicht-virtuelle-Eigenschaft für das album Weg (aber halten Sie dievirtual
navigation-Eigenschaft), wie diese:Und führen Sie dann die
AddOrUpdate
mit, dass nicht-virtuelles Eigentum, wie dieser:EF sollte, dann können Sie nur zum hinzufügen von songs, in denen der angegebene song-Pfad und album-Pfad nicht vorhanden. Ob Ihr
Song
domain-Objekt kann eine nicht-virtuelleAlbumPath
Eigenschaft ist eine andere Frage, aber dies sollte zumindest ermöglichen es Ihnen, Ihre seed-Methode in der Weise, die Sie beschrieben.In meinem Fall, die Einzige Modifikation, Die ich habe, dass auf der Modell-Klassen vergessen zu setzen
{get; set;}
mit der Deklaration einer Eigenschaft, Also ...Es ist mein problem gelöst.Wie diese:
Bevor:
Nach:
Bitte Überprüfen Sie daher Ihr Modell-Klassen sollte die
Get/Set
EigenschaftIn meinem Fall, ändern Sie die folgenden Werte in der mapper gearbeitet.
Aus:
Zu:
Was nicht erwähnt wurde in den anderen Antworten ist, dass die Quelle des Problems ist in jedem Fall angezeigt ist die gleiche: Die "custom Identifizierung Ausdruck" als parameter übergebenen der AddOrUpdate Methode muß eine gültige Eigenschaft der Entität, die eingefügt oder aktualisiert wird. Auch, es wird nicht akzeptieren, ComplextType.Eigenschaft gibt.
Beispiel:
Beachten Sie, dass das problem wurde gelöst, als die AlbumPath verwendet wurde und auch beachten, dass der anonyme Typ erfordert keine weiteren Felder angelegt werden. Stattdessen, Sie müssen nur geben Sie den Namen der Eigenschaft.
Es erwähnenswert, vorsichtig zu sein bei der Verwendung von AddOrUpdate als das Ergebnis kann vernichtend sein.