예제 #1
0
        private Entity DefineSubmissionWorkflow(SchemaSpecification dbo, Entity session, Entity conference)
        {
            var submission = dbo.CreateEntity("Submission", table =>
            {
                var sessionFk    = table.CreateForeignKey(session);
                var conferenceFk = table.CreateForeignKey(conference);
                var timestamp    = table.CreateDateTime2Column("Timestamp");
                table.CreateUniqueIndex(sessionFk.Column, conferenceFk.Column, timestamp);
            });

            dbo.CreateEntity("SubmissionWithdrawl", table =>
            {
                var fk = table.CreateForeignKey(submission);
                table.CreateUniqueIndex(fk.Column);
            });

            var acceptance = dbo.CreateEntity("Acceptance", table =>
            {
                var fk        = table.CreateForeignKey(submission);
                var timestamp = table.CreateDateTime2Column("Timestamp");
                table.CreateUniqueIndex(fk.Column, timestamp);
            });

            dbo.CreateEntity("AcceptanceWithdrawl", table =>
            {
                var fk = table.CreateForeignKey(acceptance);
                table.CreateUniqueIndex(fk.Column);
            });

            return(acceptance);
        }
예제 #2
0
        private Entity DefineSession(SchemaSpecification dbo, Entity speaker)
        {
            var session = dbo.CreateEntity("Session", table =>
            {
                var fk        = table.CreateForeignKey(speaker);
                var timestamp = table.CreateDateTime2Column("Timestamp");
                table.CreateUniqueIndex(fk.Column, timestamp);
            });

            dbo.CreateMutableProperty(session, "Title", table =>
            {
                table.CreateStringColumn("Title", 255);
            });

            dbo.CreateMutableProperty(session, "Abstract", table =>
            {
                table.CreateStringColumn("Abstract", 2000);
            });

            var deletion = dbo.CreateEntity("SessionDeletion", table =>
            {
                var fk        = table.CreateForeignKey(session);
                var timestamp = table.CreateDateTime2Column("Timestamp");
                table.CreateUniqueIndex(fk.Column, timestamp);
            });

            dbo.CreateEntity("SessionRestoration", table =>
            {
                var fk = table.CreateForeignKey(deletion);
                table.CreateUniqueIndex(fk.Column);
            });

            return(session);
        }
예제 #3
0
        private AggregateRoot DefineField(SchemaSpecification schema)
        {
            var table = schema.CreateTable("Field");

            var id   = table.CreateIdentityColumn("FieldId");
            var pk   = table.CreatePrimaryKey(id);
            var name = table.CreateStringColumn("Name", 20);

            return(new AggregateRoot(pk));
        }
예제 #4
0
        private Entity DefineConference(SchemaSpecification dbo)
        {
            var conference = dbo.CreateEntity("Conference", table =>
            {
                var guid = table.CreateGuidColumn("ConferenceGuid");
                table.CreateUniqueIndex(guid);
            });

            return(conference);
        }
예제 #5
0
        private static void DefineContribution(SchemaSpecification schema, AggregateRoot mathematician)
        {
            var table = schema.CreateTable("Contribution");

            var contributionId  = table.CreateIdentityColumn("ContributionId");
            var pk              = table.CreatePrimaryKey(contributionId);
            var mathematicianId = table.CreateIntColumn("MathematicianId");
            var description     = table.CreateStringColumn("Description", 500);

            var indexMathematicianId = table.CreateIndex(mathematicianId);
            var fkMathematician      = indexMathematicianId.CreateForeignKey(mathematician.PrimaryKey);
        }
예제 #6
0
        private static AggregateRoot DefineMathematician(SchemaSpecification schema)
        {
            var table = schema.CreateTable("Mathematician");

            var mathematicianId = table.CreateIdentityColumn("MathematicianId");
            var pk        = table.CreatePrimaryKey(mathematicianId);
            var name      = table.CreateStringColumn("Name", 100);
            var birthYear = table.CreateIntColumn("BirthYear");
            var deathYear = table.CreateIntColumn("DeathYear", nullable: true);

            return(new AggregateRoot(pk));
        }
예제 #7
0
        private void CreateMathematician(DatabaseSpecification db, SchemaSpecification dbo)
        {
            var table = dbo.CreateTable("Mathematician");

            var id     = table.CreateIdentityColumn("MathematicianId");
            var unique = table.CreateGuidColumn("Unique");

            var pk = table.CreatePrimaryKey(id);

            table.CreateUniqueIndex(unique);

            CreateMathematicianName(dbo, pk);
        }
예제 #8
0
        private static void CreateMathematicianNamePrior(SchemaSpecification dbo, PrimaryKeySpecification mathematicianPk)
        {
            var table = dbo.CreateTable("MathematicianNamePrior");

            var currentId = table.CreateIntColumn("MathematicianNameId");
            var priorId   = table.CreateIntColumn("PriorMathematicianNameId");

            var currentIndex = table.CreateIndex(currentId);
            var currentFk    = currentIndex.CreateForeignKey(mathematicianPk);

            var priorIndex = table.CreateIndex(priorId);
            var priorFk    = priorIndex.CreateForeignKey(mathematicianPk);

            var pk = table.CreatePrimaryKey(currentId, priorId);
        }
예제 #9
0
        private Entity DefineSpeaker(SchemaSpecification dbo)
        {
            var speaker = dbo.CreateEntity("Speaker", table =>
            {
                var userName = table.CreateStringColumn("UserName", 255);
                table.CreateUniqueIndex(userName);
            });

            dbo.CreateMutableProperty(speaker, "Name", table =>
            {
                table.CreateStringColumn("Name", 100);
            });

            return(speaker);
        }
        public static Entity CreateEntity(this SchemaSpecification schema, string tableName,
                                          Action <TableSpecification> definitions)
        {
            var table = schema.CreateTable(tableName);
            var id    = table.CreateIdentityColumn($"{tableName}Id");

            definitions(table);
            var pk = table.CreatePrimaryKey(id);

            return(new Entity
            {
                Name = tableName,
                Table = table,
                IdColumn = id,
                PrimaryKey = pk
            });
        }
예제 #11
0
        private void CreateMathematicianName(SchemaSpecification dbo, PrimaryKeySpecification mathematicianPk)
        {
            var table = dbo.CreateTable("MathematicianName");

            var id = table.CreateIdentityColumn("MathematicianNameId");
            var mathematicianId = table.CreateIntColumn("MathematicianId");
            var firstName       = table.CreateStringColumn("FirstName", 50);
            var lastName        = table.CreateStringColumn("LastName", 50);
            var hashCode        = table.CreateFixedBinaryColumn("HashCode", 32);

            var index = table.CreateIndex(mathematicianId);
            var fk    = index.CreateForeignKey(mathematicianPk);

            var pk = table.CreatePrimaryKey(id);

            CreateMathematicianNamePrior(dbo, pk);
        }
예제 #12
0
        public static void CreateMutableProperty(this SchemaSpecification schema, Entity entity, string propertyName, Action <TableSpecification> definitions)
        {
            var table = schema.CreateTable($"{entity.Name}{propertyName}");
            var id    = table.CreateIdentityColumn($"{entity.Name}{propertyName}Id");
            var fkid  = table.CreateIntColumn($"{entity.Name}Id");
            var index = table.CreateIndex(fkid);

            index.CreateForeignKey(entity.PrimaryKey);
            definitions(table);
            var propertyPk = table.CreatePrimaryKey(id);

            var predecessor   = schema.CreateTable($"{entity.Name}{propertyName}Predecessor");
            var predecessorId = predecessor.CreateIntColumn("Predecessor");
            var successorId   = predecessor.CreateIntColumn("Successor");

            predecessor.CreatePrimaryKey(predecessorId, successorId);
            var predecessorIndex = predecessor.CreateIndex(predecessorId);
            var successorIndex   = predecessor.CreateIndex(successorId);

            predecessorIndex.CreateForeignKey(propertyPk);
            successorIndex.CreateForeignKey(propertyPk);
        }
예제 #13
0
        private void DefineSchedule(SchemaSpecification dbo, Entity conference, Entity acceptance)
        {
            var room = dbo.CreateEntity("Room", table =>
            {
                var conferenceId = table.CreateForeignKey(conference);
                var roomNumber   = table.CreateStringColumn("RoomNumber", 50);
                table.CreateUniqueIndex(conferenceId.Column, roomNumber);
            });

            var timeSlot = dbo.CreateEntity("TimeSlot", table =>
            {
                var conferenceId = table.CreateForeignKey(conference);
                var date         = table.CreateDateColumn("Date");
                var time         = table.CreateTimeColumn("Time", fractionalSeconds: 0);
                table.CreateUniqueIndex(conferenceId.Column, date, time);
            });

            dbo.CreateMutableProperty(acceptance, "Schedule", table =>
            {
                table.CreateForeignKey(room);
                table.CreateForeignKey(timeSlot);
            });
        }
예제 #14
0
 public TestGenerator(string connectionString)
 {
     _connectionString = connectionString;
     SqlSrvProvider dbSchema = new SqlSrvProvider(connectionString);
     _schemaSpecification = dbSchema.LoadDbSpecification();
 }
 public new CompareResult Compare(SchemaSpecification specification)
 {
     return base.Compare(specification);
 }