Nachtrag: hier die Fehlermeldung auf Deutsch:
Der Wert einer Eigenschaft, die zum Schlüssel eines Objekts gehört, stimmt nicht mit dem entsprechenden Wert der Eigenschaft überein, die im ObjectContext gespeichert ist.
The value of a property that is part of an object's key does not match the corresponding property value stored in the ObjectContext.
Kein wirklich aussagekräftiger Fehler wenn man die Lösung kennt:
EntityFramework verlangt rigoros PrimaryKeys in jeder Tabelle. (den Fehler könnte man aber auch anders formulieren, zumindest so dass es ein dummer Mensch wie ich versteht). Ich für meinen Teil hab hier jetzt 30 Tabellen in denen ich nicht wirklich einen Primärschlüssel brauche, da es sich um Referenztabellen handelt. Nun gut, ich löse das wie bereits 2 Beiträge weiter unten über einen uniquidentifier der den Standardwert newid() besitzt und trage diese ID als Primärschlüssel in meine Tabellen ein (Fleissarbeit). Aber danach scheint es sauber zu funktionieren.
Nachtrag: Ein Scheiss funktioniert, zumindest nicht in Sichten!!!
Hierzu gibt es ein
Microsoft Ticket
leider gibt es keine Fehlerbehebung, lediglich einen Workaround. Das Problem ist,
dass EntityFramework alle Felder einer Sicht als EntityKey festlegt, was absoluter Quatsch ist! Dies muss man manuell beheben. Selten so einen Dreck von MS gesehen und glaube nicht, dass das gewollt ist.
Nachtrag: abgesehen davon, dass die Sache an sich ein absolutes Unding ist gibt es eine vermutlich bessere Lösung, ohne das autom. generierte EntityModel (evtl jedesmal) anzupassen.
Im View den Feldern die Funktion NULLIF voranstellen, damit anstelle Leerstrings ein NULL übergeben wird, was anscheinend dieses Mysterium verursacht. (Vorsicht ISNULL verursacht natürlich genau das Gegenteil!)
http://stackoverflow.com/questions/1013333/entity-framework-and-sql-server-view-question