首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

EF基础2

2013-03-17 
EF基础二EF基础二,EF5,NET4.5,ANNOTATION AND FLUENT API,MOST FOCUS ON ENTITYTYPECONFIGURATION.using S

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);        }    }}


 

 

 

热点排行