• 18. Februar 2011

Code Only mit Entity Framework CTP 5

Mit Entity Framework CTP 5 steht ein Ausblick auf ein Feature zur Verfügung, welche recht wahrscheinlich in der nächsten Version des Entity Frameworks einzug halten wird: Code Only. Es erlaubt das Mappen von Entitäten auf Tabellen anhand bestimmter Konventionen. Für Fälle, in denen diese Konventionen nicht passen, können Sie über ein Fluent-Interface oder über Attribute abgeändert werden. Diese Vorgehensweise, die sehr an jener von (N)Hibernate erinnert, hat den Vorteil, dass das Entity Data Model wegfällt und sich die Entitäten somit leichter auf verschiedene Assemblies aufteilen lassen. Ferner kann mit dem Entwickeln des OO-Modells in Form von Klassen begonnen werden.

Das nachfolgende Listing liefert einen ersten Vorgeschmack darauf.

public class HotelContext : DbContext
{
    public HotelContext(): base("HotelDb-CodeFirst") { }

    public DbSet<Hotel> Hotels { get; set; }
    public DbSet<Region> Regionen { get; set; }
}


[Table("RegionenTab")]
public class Region
{
    [Key]
    [Column(Name="Region_Code", Order=1)]
    [DatabaseGenerated(DatabaseGenerationOption.None)]
    public virtual int RegionCode { get; set; }

    [MaxLength(27)]
    [Required]
    [Column(Name = "Bez", Order = 3)]
    public virtual string Bezeichnung { get; set; }
    public virtual ICollection<Hotel> Hotels { get; set; }

    public virtual ICollection<Hotel> TopRanked { get; set; }

    [ConcurrencyCheck]
    [Column(Name = "Version", Order = 2, TypeName="bigint")]
    public virtual int Version { get; set; }
}


[ComplexType]
public class Adresse
{
    public virtual string Strasse { get; set; }
    public virtual string Plz { get; set; }
    public virtual string Ort { get; set; }
}

public class Hotel
{
    public virtual int HotelId { get; set; }
    public virtual Adresse Adresse { get; set; }
    public virtual string Bezeichnung { get; set; }
    public virtual int Sterne { get; set; }

    [InverseProperty("TopRanked")]
    public virtual Region TopRankedInRegion { get; set; }

    public virtual int RegionCode { get; set; }

    [TimestampAttribute]
    public virtual byte[] LetzteModifikation { get; set; }

    public virtual double Preis { get; set; }

    [NotMapped]
    public virtual double TouristenPreis { get { return Preis * 2; } }

    public virtual Kategorie Kategorie { get; set; } 

    [ForeignKey("RegionCode")]
    [InverseProperty("Hotels")]
    public virtual Region Region { get; set; } 
    public virtual ICollection<Merkmal> Merkmale { get; set; }
}

 Weitere Infos dazu finden sich in meinem aktuellen Artikel im .NET Magazin.

 

Schulung und Beratung

Angular 2

Datenbindung, Formulare, Validierung, Routing, HTTP, Komponenten, ...

Details

Migration auf Angular 2

Bestehende Projekte auf Angular 2 migrieren, ngUpgrade, ...

Details

Progressive Web-Apps mit Angular 2

InHouse-Schulung und/oder Beratung maßgeschneidert für Ihre Lernziele

Details

Architektur-Workshop

Interaktiver Prototyp-Workshop für Ihre Anwendung

Details

Entity Framework (EF)

Datenzugriff mit Entity Framework, Mapping-Szenarien, CRUD, Transaktionen, Migrations, Stored Procedures, Vererbung, Neuerungen in Version 7

Details

Angular 2: Deep Dive

Erweiterte Aspekte von Angular 2

Details

ASP.NET WebAPI

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Web APIs mit ASP.NET MVC 6

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Moderne Security-Szenarien für Web APIs

OAuth 2, OpenId Connect, JWT, Spielarten und Flows, ...

Details

Weitere Schulungen ...