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.