XML-Felder mit Entity Framework-Code zuerst
Ich verwende Entity Framework mit dem Code First-Modell (pet-Projekt, und ich liebe es, einfache Klassen zu bearbeiten und mein Schema automatisch aktualisieren zu lassen). Ich habe eine Klasse wie folgt:
[Table("Polygons")]
public class Polygon
{
public int PolygonId { get; set; }
public String Texture { get; set; }
public virtual ICollection<Point> Points { get; set; }
}
[Table("Points")]
public class Point
{
public int PolygonId { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
Es ist nützlich für mich, Polygone in der Datenbank zu speichern und ihre Textur abfragen zu können. Wenn ich dagegen ein Polygon mit 5.000 Punkten in der Datenbank speichere, dauert es ewig, bis so viele Einfügungen ausgeführt sind, und ehrlich gesagt, werde ich niemals Punkte abfragen, außer ein einzelnes Polygon abzurufen.
Am liebsten würde ich "PolygonId" in der Klasse "Point" entfernen, die Tabelle "Points" entfernen und die Tabelle "Polygon" so aussehen lassen
PolygonId int PK
Texture varchar(255)
Points XML
Lassen Sie die Punkte dann einfach zu einer Zeichenfolge serialisieren, die direkt in der Tabelle gespeichert und anschließend wieder zu einem Array von Punkten deserialisiert wird. Gibt es eine Möglichkeit, EF dazu zu bewegen oder einen benutzerdefinierten Serializer / Deserializer für das Feld zu schreiben, sodass es zumindest automatisch erscheint, wenn es in der gesamten Codebasis verwendet wird?
Vielen Dank,
Dan