CodeGarten.Data.Context.OnModelCreating C# (CSharp) Méthode

OnModelCreating() protected méthode

protected OnModelCreating ( DbModelBuilder modelBuilder ) : void
modelBuilder DbModelBuilder
Résultat void
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            Database.SetInitializer(new CodeGartenInitializer());

            modelBuilder.Entity<Container>().HasRequired(c => c.Type).WithMany().
                WillCascadeOnDelete(false);

            modelBuilder.Entity<ContainerType>().HasKey(cp => new {cp.Name, cp.StructureId});
            modelBuilder.Entity<ContainerType>().HasRequired(cp => cp.Structure).WithMany().WillCascadeOnDelete(
                false);

            modelBuilder.Entity<WorkSpaceType>().HasKey(wt => new {wt.Name, wt.StructureId});
            modelBuilder.Entity<WorkSpaceType>().HasRequired(wt => wt.Structure).WithMany().WillCascadeOnDelete(false);
            modelBuilder.Entity<WorkSpaceType>().HasMany(wst => wst.Services).WithMany();

            modelBuilder.Entity<ServiceTypePermission>().HasKey(sp => new {sp.Name, sp.ServiceName});

            modelBuilder.Entity<RoleType>().HasKey(rt => new {rt.Name, rt.StructureId});
            modelBuilder.Entity<RoleType>().HasRequired(rt => rt.Structure).WithMany().WillCascadeOnDelete(false);

            modelBuilder.Entity<Rule>().HasKey(r => new {r.Name, r.StructureId});
            modelBuilder.Entity<Rule>().HasRequired(rt => rt.Structure).WithMany().WillCascadeOnDelete(false);
            modelBuilder.Entity<Rule>().HasMany(rule => rule.Permissions).WithMany();

            modelBuilder.Entity<Role>().HasKey(
                r =>
                new
                    {
                        r.StructureId,
                        r.ContainerTypeName,
                        r.RoleTypeName,
                        r.WorkSpaceTypeName
                    });
            modelBuilder.Entity<Role>().HasMany(r => r.Rules).WithMany();
            modelBuilder.Entity<Role>().HasRequired(r => r.RoleType).WithMany().WillCascadeOnDelete(false);

            modelBuilder.Entity<EnrollKey>().HasKey(e => new { e.ContainerId, e.RoleTypeName, e.StructureId });

            modelBuilder.Entity<Enroll>().HasKey(
                e =>
                new
                    {
                        e.UserName,
                        e.ContainerId,
                        e.RoleTypeName,
                        e.StructureId
                    });
            modelBuilder.Entity<Enroll>().HasRequired(e => e.RoleType).WithMany().WillCascadeOnDelete(
                false);

            modelBuilder.Entity<Role>().HasRequired(r => r.Binding).WithMany().WillCascadeOnDelete(false);

            modelBuilder.Entity<Binding>().HasMany(cpwst => cpwst.Roles).WithRequired(
                r => r.Binding).WillCascadeOnDelete(false);

            modelBuilder.Entity<Binding>().HasKey(
                cpwst => new { cpwst.StructureId, cpwst.ContainerTypeName, cpwst.WorkSpaceTypeName });

            modelBuilder.Entity<Binding>().HasRequired(b => b.ContainerType).WithMany(cp => cp.Bindings).WillCascadeOnDelete(false);
            modelBuilder.Entity<Binding>().HasRequired(b => b.WorkSpaceType).WithMany().WillCascadeOnDelete(false);
            modelBuilder.Entity<Binding>().HasRequired(b => b.Structure).WithMany().WillCascadeOnDelete(false);

            //modelBuilder.Entity<ContainerPrototype>().HasMany(cp => cp.WorkSpaceTypes).WithRequired(cpwst => cpwst.ContainerPrototype);

            //        modelBuilder.Entity<WorkSpaceType>().HasMany(wst => wst.ContainerPrototypes).WithRequired(
            //cpwst => cpwst.WorkSpaceType);
        }