[Table("KategorienTable")] public class ProduktKategorie { [Key] [Column("Kategorie_Nummer", Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int KategorieNr { get; set; } [Required, MaxLength(50)] public string KategorieBezeichnung { get; set; } public virtual ICollection<Produkt> Produkte { get; set; } public virtual ICollection<Produkt> Aktionen { get; set; } [ConcurrencyCheck] [Column("Version", Order = 2, TypeName="int")] public int Version { get; set; } } [ComplexType] public class ProduktDetails { public string Beschreibung { get; set; } public string BildPfad { get; set; } public string HerstellerLink { get; set; } } public class Produkt { public int ProduktId { get; set; } public ProduktDetails Details { get; set; } public string Bezeichnung { get; set; } public double Preis { get; set; } [TimestampAttribute] public byte[] Zeitstempel { get; set; } [NotMapped] public double BruttoPreis { get { return Preis * 1.19; } } // Fremdschlüsselmapping public virtual int KategorieNr { get; set; } [ForeignKey("KategorieNr")] [InverseProperty("Produkte")] public virtual ProduktKategorie Kategorie { get; set; } [InverseProperty("Aktionen")] public virtual ProduktKategorie AktionInKategorie { get; set; } } public class ShopContext : DbContext { public ShopContext() : base("ShopDb") { } public DbSet<Produkt> Produkte { get; set; } public DbSet<ProduktKategorie> Kategorien { get; set; } } class Program { static void Main(string[] args) { Database.SetInitializer<ShopContext>(new DropCreateDatabaseAlways<ShopContext>()); using (var ctx = new ShopContext()) { ProduktKategorie kat = new ProduktKategorie(); kat.KategorieBezeichnung = "Bücher"; kat.KategorieNr = 7; Produkt p1 = new Produkt(); p1.Bezeichnung = ".NET 4 UPDATE"; p1.Details = new ProduktDetails(); p1.Details.Beschreibung = "Von .NET 3 auf .NET 4 ..."; p1.Details.BildPfad = null; p1.Details.HerstellerLink = "http://tinyurl.com/net4update"; p1.Kategorie = kat; kat.Produkte = new List<Produkt> { p1 }; ctx.Kategorien.Add(kat); ctx.SaveChanges(); } } }
Standardmäßig versucht dieses Beispiel, eine Datenbank ShopDb in der SQL-Server Instanz .\SQLEXPRESS anzulegen. Ist dies nicht gewünscht, kann die zu verwendende Datenbank durch Festlegen einer Datenbankverbindungszeichenfolge mit dem Namen ShopDb in der app.config angegeben werden.