2017-07-18 1 views
2

Ich versuche, eine Entität in einer Tabelle mit LinqPad zu kopieren.Kopieren und aktualisieren Datensatzausdruck funktioniert nicht

let dc = new TypedDataContext() 
let title = "Some title" 

let newestUser= dc.UserIDs |> Seq.filter (fun(x)->x.Funktion="SomeFunction") |> Seq.last 

let newUser= {newestUserwith Title= title} 

Der Typ 'UserID' enthält kein Feld 'Titel'

Aber Titel ist ein öffentlicher Bereich. Ich sehe es in der Liste mit GetFields()

Hat jemand eine Idee, was der Grund dafür ist?

+0

Versuchen Sie, Typen mit von Ihnen erstellten Symbolen zu kommentieren. Welcher Typ ist 'nextUset'? Können Sie die Definition dieses Typs anzeigen? 'Title' ist ein Feld welcher Art? –

+0

hi @ BartekKobyłecki Titel ist ein String und die Definition der Entität kommt von DataContext (ich benutze LinqPad und UserIDs ist eine Tabelle) – user278618

+0

'mit' funktioniert. Wenn Sie einen Kompilierungsfehler erhalten, verwenden Sie den falschen Typ, oder Ihre Tabelle hat gerade dieses Datenbankfeld nicht. Veröffentlichen Sie ein minimales, * vollständiges * und * reproduzierbares * Beispiel. Was du gepostet hast, ist nicht vollständig (die Typen fehlen) oder reproduzierbar –

Antwort

6

Das Schlüsselwort with wird zum Kopieren und Aktualisieren von F# records verwendet. Ein Datensatz ist eine dumme Menge von Feldern, die Werte und keinen internen Status enthalten, der einfach zu kopieren ist. Es kann nicht mit normalen Objekten arbeiten, da es kein definiertes Verfahren zum Kopieren eines bestimmten Objekts gibt.

Die Fehlermeldung, die von F # angegeben wird, wenn versucht wird, diese Syntax für ein normales Objekt zu verwenden, lautet The record label 'Title' is not defined. Es wäre hilfreicher, wenn es 'newestUser' is not a record wäre.

Verwandte Themen