Entity Framework 4 CTP 5 – Braucht es das NotMapped-Attribut überhaupt?
Beim CodeFirst-Ansatz hat das NotMapped-Attribut die Aufgabe Eigenschaften für das O/R-Mapping zu ignorieren. Notwendig wird dieses, wenn Auto-implemented properties oder Eigenschaften verwendet werden, die den Getter und Setter implementieren.
Interessant wird es, wenn Eigenschaften nur den Getter implementieren (Read only properties). In diesem Szenario ist die Kennzeichnung mit NotMapped nicht notwendig.
Dazu ein kleines Beispiel mit der Customer-Klasse.
Customer-Klasse mit Read-only Eigenschaft (C#)
[MetadataType(typeof(CustomerMetadata))]
public class Customer
{
public int Id { get; internal set; }
public string Name { get; set; }
public string Street { get; set; }
public string Postalcode { get; set; }
public string City { get; set; }
public string LetterAddress
{
get
{
return String.Format(
"{0}\r\n{1}\r\n{2} {3}",
this.Name,
this.Street,
this.Postalcode,
this.City);
}
}
}
Neu besitzt die Klasse eine Eigenschaft mit den Namen LetterAddress, die nur einen Getter implementiert. Nach der Neuerstellung der Datenbank hat die Tabelle auf der Datenbank den Aufbau wie in Abbildung 1.

- Abbildung 1 Aufbau der Tabelle auf Datenbankebene ohne Spalte LetterAddress
Dabei wird ersichtlich, dass Eigenschaften die nur einen Getter implementieren während der Erstellung ignoriert werden. Sobald der Setter ins Spiel kommt, ist das Attribut NotMapped weiterhin notwendig.
- 0 Kommentar(e)


Mein Kommentar