EF基础二
EF基础二,EF5,NET4.5,ANNOTATION AND FLUENT API,MOST FOCUS ON ENTITYTYPECONFIGURATION.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity;using System.ComponentModel.DataAnnotations.Schema;using System.Data.Entity.ModelConfiguration;namespace BlueSea{ class Program { static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlueSeaContext>()); InsertDestination(); InsertTrip(); UpdateTrip(); InsertPserson(); UpdatePerson(); } private static void InsertDestination() { var destination = new Destination { Country = "Indonesia", Description = "Tourism in Bali", Name = "Bali" }; using (var context = new BlueSeaContext()) { context.Destinations.Add(destination); context.SaveChanges(); } } private static void InsertTrip() { var trip = new Trip { CostUSD = 800, StatrtDate = new DateTime(2013, 3, 15), EndDate = new DateTime(2013, 3, 20) }; using (var context = new BlueSeaContext()) { context.Trips.Add(trip); context.SaveChanges(); } } private static void UpdateTrip() { using (var cntext = new BlueSeaContext()) { var trip = cntext.Trips.FirstOrDefault(); trip.CostUSD = 750; cntext.SaveChanges(); } } private static void InsertPserson() { var person = new Person { FirstName = "Martin", LastName = "Jack", SocialSecurityNumber = 12345678 }; using (var context = new BlueSeaContext()) { context.People.Add(person); context.SaveChanges(); } } private static void UpdatePerson() { using (var context = new BlueSeaContext()) { var person = context.People.FirstOrDefault(); person.FirstName = "Peter"; context.SaveChanges(); } } } public class Destination { public int DestinatonID { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo { get; set; } public virtual ICollection<Lodging> Lodgings { get; set; } } public class DestinationConfiguration : EntityTypeConfiguration<Destination> { public DestinationConfiguration() { HasKey(d => d.DestinatonID); Property(d => d.Name).IsRequired(); Property(d => d.Description).HasMaxLength(500); Property(d => d.Photo).HasColumnType("image"); } } public class Lodging { public int LodgingID { get; set; } public string Name { get; set; } public string Owener { get; set; } public bool IsResort { get; set; } public decimal MileFromAirport { get; set; } public virtual Destination Destination { get; set; } } public class LodgingConfiguration : EntityTypeConfiguration<Lodging> { public LodgingConfiguration() { Property(l => l.Name).IsRequired().HasMaxLength(200); Property(l => l.MileFromAirport).HasPrecision(8, 1); Property(l => l.Owener).IsUnicode(false); } } public class Trip { public Guid Identifier { get; set; } public DateTime StatrtDate { get; set; } public DateTime EndDate { get; set; } public decimal CostUSD { get; set; } public byte[] RowVVersion { get; set; } } public class TripConfiguration : EntityTypeConfiguration<Trip> { public TripConfiguration() { HasKey(t => t.Identifier); Property(t => t.RowVVersion).IsRowVersion(); Property(t => t.Identifier).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); } } public class Person { public Person() { Address = new Address(); Info = new PersonnalInfo { Weight = new Measurement(), Height = new Measurement() }; } public int PersonId { get; set; } public int SocialSecurityNumber { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public byte[] RowVersion { get; set; } public Address Address { get; set; } public PersonnalInfo Info { get; set; } } public class PersonConfiguration : EntityTypeConfiguration<Person> { public PersonConfiguration() { HasKey(p =>p.PersonId); Property(p => p.SocialSecurityNumber).IsConcurrencyToken(); Property(p => p.RowVersion).IsRowVersion(); Property(p =>p.SocialSecurityNumber).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); } } public class Address { public int AddressID { get; set; } public string StreetAddress { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get; set; } } public class AddressConfiguration : ComplexTypeConfiguration<Address> { public AddressConfiguration() { Property(a => a.StreetAddress).HasMaxLength(150); } } public class PersonnalInfo { public Measurement Weight{get;set;} public Measurement Height{get;set;} public string DierRestrict { get; set;} } public class Measurement { public decimal Reading { get; set; } public string Units { get; set; } } public class BlueSeaContext : DbContext { public DbSet<Destination> Destinations { get; set; } public DbSet<Lodging> Lodgings { get; set; } public DbSet<Trip> Trips { get; set; } public DbSet<Person> People { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new DestinationConfiguration()); modelBuilder.Configurations.Add(new LodgingConfiguration()); modelBuilder.Configurations.Add(new TripConfiguration()); modelBuilder.Configurations.Add(new PersonConfiguration()); modelBuilder.Configurations.Add(new AddressConfiguration()); modelBuilder.ComplexType<PersonnalInfo>(); base.OnModelCreating(modelBuilder); } }}