Ejemplo n.º 1
0
        protected override void OnModelCreating(Data.Entity.ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.UseSqlServerIdentityColumns();

            // TODO GitHubIssue#57: Complete EF7 to EDM model mapping
            // After EF7 adds support for DataAnnotation, some of following configuration could be deprecated.

            modelBuilder.Entity <Category>(entityBuilder =>
            {
                entityBuilder.ToTable("Categories");
                entityBuilder.Property(e => e.CategoryName).IsRequired().HasMaxLength(15);
                entityBuilder.Property(e => e.Description).HasSqlServerColumnType("ntext");
                entityBuilder.Property(e => e.Picture).HasSqlServerColumnType("image");
                entityBuilder.Property(e => e.CategoryName).HasMaxLength(15);
                entityBuilder.HasKey(e => e.CategoryID);
            });


            modelBuilder.Entity <Contact>(entityBuilder =>
            {
                entityBuilder.ToTable("Contacts");
                entityBuilder.Property(e => e.HomePage).HasSqlServerColumnType("ntext");
                entityBuilder.Property(e => e.Photo).HasSqlServerColumnType("image");
                //entityBuilder.Key(e => e.ContactID);
            });

            modelBuilder.Entity <Customer>(entityBuilder =>
            {
                entityBuilder.ToTable("Customers");
                entityBuilder.Property(e => e.CompanyName).IsRequired().HasMaxLength(40);
                entityBuilder.HasKey(e => e.CustomerID);
            });

            modelBuilder.Entity <Employee>(entityBuilder =>
            {
                entityBuilder.ToTable("Employees");
                entityBuilder.Property(e => e.LastName).IsRequired().HasMaxLength(20);
                entityBuilder.Property(e => e.FirstName).IsRequired().HasMaxLength(10);
                entityBuilder.HasMany(e => e.Employees1).WithOne(e => e.Employee1).Required(false).ForeignKey(e => e.ReportsTo);
            });

            modelBuilder.Entity <Order>(entityBuilder =>
            {
                entityBuilder.ToTable("Orders");
                entityBuilder.HasMany(e => e.Order_Details).WithOne(e => e.Order).Required().ForeignKey(e => e.OrderID);
            });

            modelBuilder.Entity <Order_Detail>(entityBuilder =>
            {
                entityBuilder.ToTable("Order Details");
                entityBuilder.Property(e => e.UnitPrice).HasSqlServerColumnType("money");
                entityBuilder.HasKey(e => new
                {
                    K1 = e.OrderID,
                    K2 = e.ProductID,
                });
            });

            modelBuilder.Entity <Product>(entityBuilder =>
            {
                entityBuilder.ToTable("Products");
                entityBuilder.Property(e => e.UnitPrice).HasSqlServerColumnType("money");
                entityBuilder.HasMany(e => e.Order_Details).WithOne(e => e.Product).Required();
            });

            modelBuilder.Entity <Region>(entityBuilder =>
            {
                entityBuilder.Property(e => e.RegionDescription).IsRequired();
                entityBuilder.HasKey(e => e.RegionID);
            });

            modelBuilder.Entity <Shipper>(entityBuilder =>
            {
                entityBuilder.ToTable("Shippers");
                entityBuilder.HasMany(e => e.Orders).WithOne(e => e.Shipper).ForeignKey(e => e.ShipVia).Required(false);
            });

            modelBuilder.Entity <Supplier>(entityBuilder =>
            {
            });

            modelBuilder.Entity <Territory>(entityBuilder =>
            {
                entityBuilder.ToTable("Territories");
            });

            // TODO GitHubIssue#57: Complete EF7 to EDM model mapping
            // ToTable() is not yet supported in EF7, remove following ignores after it's ready.
            modelBuilder.Ignore <CustomerDemographic>();

            modelBuilder.Entity <Customer>().Ignore(e => e.CustomerDemographics);

            modelBuilder.Entity <Employee>().Ignore(e => e.Territories);

            modelBuilder.Entity <Territory>().Ignore(e => e.Employees);
        }