示例#1
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // Timestamp/row version
            modelBuilder.Entity <Blog>()
            .Property(p => p.Timestamp)
            .IsRowVersion();

            modelBuilder.Entity <Blog>()
            .HasIndex(d => d.Url)
            .IsUnique();

            var convert = new EnumToStringConverter <PostType>();

            modelBuilder.Entity <Post>()
            .Property(d => d.PostType)
            .HasConversion(convert);

            base.OnModelCreating(modelBuilder);
        }
示例#2
0
        /// <summary>
        /// Override this method to further configure the model that was discovered by convention from the entity types
        /// exposed in dbset properties on your derived context. The resulting model may be cached
        /// and re-used for subsequent instances of your derived context.
        /// </summary>
        /// <param name="builder">The builder being used to construct the model for this context. Databases (and other extensions) typically
        /// define extension methods on this object that allow you to configure aspects of the model that are specific
        /// to a given database.</param>
        /// <exception cref="ArgumentNullException">modelBuilder.</exception>
        /// <remarks>
        /// If a model is explicitly set on the options for this context" />)
        /// then this method will not be run.
        /// </remarks>
        protected override void OnModelCreating(ModelBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            base.OnModelCreating(builder);

            EnumToStringConverter <DayOfWeek>   converterDayOfWeek  = new EnumToStringConverter <DayOfWeek>();
            EnumToStringConverter <ETimePeriod> converterTimePeriod = new EnumToStringConverter <ETimePeriod>();

            CompetitionDto.OnModelBuilding(
                builder,
                converterDayOfWeek,
                converterTimePeriod);

            DisableCascadeDeletes(builder);
        }
        public void Configure(EntityTypeBuilder <PaymentMethod> builder)
        {
            builder.HasOne(pm => pm.User)
            .WithMany(u => u.PaymentMethods)
            .HasForeignKey(pm => pm.UserId);

            builder.HasOne(pm => pm.CreditCard)
            .WithOne(cc => cc.PaymentMethod)
            .HasForeignKey <PaymentMethod>(pm => pm.CreditCardId);

            builder.HasOne(pm => pm.BankAccount)
            .WithOne(ba => ba.PaymentMethod)
            .HasForeignKey <PaymentMethod>(pm => pm.BankAccountId);

            var converter = new EnumToStringConverter <PaymentType>();

            builder.Property(pm => pm.Type)
            .HasConversion(converter);
        }
示例#4
0
        public void EnumToStringConverterTest()
        {
            var conv = new EnumToStringConverter();

            var a = MockEnum.Simple;
            var b = MockEnum.MultipleWordsInTheName;

            var aForward = conv.Convert(a, typeof(MockEnum), null, _cult) as string;
            var bForward = conv.Convert(b, typeof(MockEnum), null, _cult) as string;

            Assert.AreEqual("Simple", aForward);
            Assert.AreEqual("Multiple Words In The Name", bForward);

            var aBack = conv.ConvertBack(aForward, typeof(MockEnum), null, _cult);
            var bBack = conv.ConvertBack(bForward, typeof(MockEnum), null, _cult);

            Assert.AreEqual(a, aBack);
            Assert.AreEqual(b, bBack);
        }
        public void Configure(EntityTypeBuilder <PaymentHistory> builder)
        {
            var descriptionConverter = new EnumToStringConverter <PaymentDescription>();

            builder.ToTable("PaymentHistory");

            builder.HasKey(x => x.Id);

            builder.Property(x => x.Id).ValueGeneratedOnAdd();
            builder.Property(x => x.Date).HasDefaultValueSql("GETDATE()");
            builder.Property(x => x.Description)
            .IsRequired()
            .HasConversion(descriptionConverter)
            .HasMaxLength(32);
            builder.Property(x => x.Saldo).IsRequired().HasColumnType("decimal(18, 2)");
            builder.Property(x => x.CurrentBalance).HasColumnType("decimal(18, 2)");

            builder.HasOne(x => x.Payer).WithMany().HasForeignKey(x => x.UserId);
        }
示例#6
0
        public void Configure(EntityTypeBuilder <Activity> builder)
        {
            var activitySeverityConverter = new EnumToStringConverter <ActivitySeverityEnum>();

            builder
            .Property(a => a.Severity)
            .HasConversion(activitySeverityConverter);

            var activityObjectConverter = new EnumToStringConverter <ActivityObjectEnum>();

            builder
            .Property(a => a.ObjectName)
            .HasConversion(activityObjectConverter);

            builder
            .HasOne(a => a.CreatedBy)
            .WithMany(u => u.Activities)
            .HasForeignKey(a => a.CreatedById);
        }
示例#7
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var converter = new BoolToStringConverter("F", "T");

            var myBoolConverter = new ValueConverter <bool, string>(
                v => v ? "T" : "F",
                v => v == "T"
                );

            var enumConverter = new EnumToStringConverter <BoolEnum>();

            var myEnumConverter = new ValueConverter <BooleanEnum, string>(
                v => v == BooleanEnum.TrueValue ? "T" : "F",
                v => v == "T" ? BooleanEnum.TrueValue : BooleanEnum.FalseValue
                );

            modelBuilder.Entity <Zbozi>(ent =>
            {
                ent.ToTable("ZBOZI");
                ent.HasKey(k => k.C_ZBO);
                ent.Property(p => p.NAZEV).IsRequired();
                // field ZRUSENO is Oracle: CHAR(1) NULL
                ent.Property(p => p.ZRUSENO).HasConversion(converter);
                // field ZOBR_INTERNET is Oracle: CHAR(1) NULL
                ent.Property(p => p.ZOBR_INTERNET).HasConversion(myBoolConverter);
                // field SESTAVA is Oracle: CHAR(1) NULL
                ent.Property(p => p.SESTAVA).HasConversion(enumConverter);
                // field SALOBAL is Oracle: CHAR(1) NULL
                ent.Property(p => p.SALOBAL).HasConversion(myEnumConverter);
            });

            modelBuilder.Entity <Rkdav>(ent =>
            {
                ent.HasKey(k => k.RKDAV);
                ent.Property(p => p.RKDAV).HasMaxLength(5);
            });

            modelBuilder.Entity <Entity>(ent =>
            {
                ent.HasKey(k => k.ENTITA);
            });
        }
示例#8
0
        public async Task <string[]> CancelAllOrders(string symbol = null, TradeType?tradeType = null)
        {
            //  /api/v1/orders

            var dict = new Dictionary <string, object>();

            if (symbol != null)
            {
                dict.Add("symbol", symbol);
            }

            if (tradeType != null)
            {
                dict.Add("tradeType", EnumToStringConverter <TradeType> .GetEnumName((TradeType)tradeType));
            }

            var jobj = await MakeRequest(HttpMethod.Delete, "/api/v1/orders", reqParams : dict);

            return(jobj["cancelledOrderIds"].ToObject <string[]>());
        }
示例#9
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // TODO create migarion, update db, update remote db
            var productPaymentInfoTypeEnumConverter = new EnumToStringConverter <ProductPaymentInfoType>();
            var fieldTypeEnumConverter         = new EnumToStringConverter <FieldType>();
            var fieldInerfaceTypeEnumConverter = new EnumToStringConverter <FieldInerfaceType>();

            modelBuilder.Entity <ProviderField>().Property(x => x.Type).HasConversion(fieldTypeEnumConverter);
            modelBuilder.Entity <ProviderField>().Property(x => x.InterfaceType).HasConversion(fieldInerfaceTypeEnumConverter);
            modelBuilder.Entity <ProductPaymentInfo>().Property(x => x.ProductType).HasConversion(productPaymentInfoTypeEnumConverter);

            //modelBuilder.ApplyConfiguration(new PaymentCategoryConfigurator());
            //modelBuilder.ApplyConfiguration(new PaymentCommissionConfigurator());
            modelBuilder.ApplyConfiguration(new PaymentInfoConfigurator());
            modelBuilder.ApplyConfiguration(new PaymentProviderConfigurator());
            modelBuilder.ApplyConfiguration(new PaymentProviderFieldConfigurator());
            modelBuilder.ApplyConfiguration(new PaymentProviderRegionConfigurator());
            modelBuilder.ApplyConfiguration(new ProductPaymentInfoConfigurator());
            //modelBuilder.ApplyConfiguration(new ProviderMaskListItemConfigurator());
        }
示例#10
0
        public void Configure(EntityTypeBuilder <Optionmeta> builder)
        {
            var keyConverter = new EnumToStringConverter <KeyEnum>();

            builder
            .Property(om => om.Key)
            .HasConversion(keyConverter);

            var valueConverter = new EnumToStringConverter <ValueEnum>();

            builder
            .Property(om => om.Value)
            .HasConversion(valueConverter);

            var defaultValueConverter = new EnumToStringConverter <ValueEnum>();

            builder
            .Property(om => om.DefaultValue)
            .HasConversion(defaultValueConverter);
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var converterParamType = new EnumToStringConverter <ParamType>();

            modelBuilder
            .Entity <Param>()
            .Property(e => e.Type)
            .HasConversion(converterParamType);


            //var converterUnitType = new EnumToStringConverter<UnitType>();
            //modelBuilder
            //   .Entity<ParamValue>()
            //   .Property(e => e.Unit)
            //   .HasConversion(converterUnitType);


            var converterQuestionType = new EnumToStringConverter <QuestionType>();

            modelBuilder
            .Entity <Question>()
            .Property(e => e.Type)
            .HasConversion(converterQuestionType);


            var converterQuestionScenarioType = new EnumToStringConverter <QuestionScenarioType>();

            modelBuilder
            .Entity <Question>()
            .Property(e => e.ScenarioType)
            .HasConversion(converterQuestionScenarioType);


            var converterScenarioType = new EnumToStringConverter <ScenarioType>();

            modelBuilder
            .Entity <Scenario>()
            .Property(e => e.Type)
            .HasConversion(converterScenarioType);
        }
        protected override void OnModelCreating(ModelBuilder builder)
        {
            var cascadeFKs = builder.Model.GetEntityTypes()
                             .SelectMany(t => t.GetForeignKeys())
                             .Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Cascade);

            foreach (var fk in cascadeFKs)
            {
                fk.DeleteBehavior = DeleteBehavior.Cascade;
            }

            var providerConverter = new EnumToStringConverter <Provider>();

            builder
            .Entity <CloudProvider>()
            .Property(e => e.Provider)
            .HasConversion(providerConverter);

            builder.Entity <MddComponent>().Ignore(p => p.MddComponents);

            base.OnModelCreating(builder);
        }
示例#13
0
        public void Configure(EntityTypeBuilder <Post> builder)
        {
            var statusConverter = new EnumToStringConverter <PostStatusEnum>();

            builder
            .Property(p => p.PostStatus)
            .HasConversion(statusConverter);

            var typeConverter = new EnumToStringConverter <PostTypeEnum>();

            builder
            .Property(p => p.Type)
            .HasConversion(typeConverter);

            var visibilityConverter = new EnumToStringConverter <PostVisibility>();

            builder
            .Property(p => p.Visibility)
            .HasConversion(visibilityConverter);

            builder
            .HasIndex(p => p.Title)
            .IsUnique();

            builder
            .HasIndex(p => p.Slug)
            .IsUnique();

            builder
            .HasOne(p => p.CreatedBy)
            .WithMany(u => u.CreatedPosts)
            .HasForeignKey(p => p.CreatedById);

            builder
            .HasOne(p => p.ModifiedBy)
            .WithMany(u => u.ModifiedPosts)
            .HasForeignKey(p => p.ModifiedById);
        }
示例#14
0
        public void Configure(EntityTypeBuilder <Package> builder)
        {
            var deliveryStatusConverter = new EnumToStringConverter <DeliveryStatus>();

            builder.ToTable("Packages");

            builder.HasKey(p => p.PackageId);
            builder.Property(p => p.PackageId).HasColumnName("package_id");
            builder.Property(p => p.InvoiceNo).HasColumnName("invoice_no");
            builder.Property(p => p.Description).HasColumnName("description").IsRequired();
            builder.Property(p => p.Price).HasColumnName("price").IsRequired();
            builder.Property(p => p.DeliveryPrice).HasColumnName("delivery_price").IsRequired();
            builder.Property(p => p.Status).HasColumnName("status").IsRequired().HasConversion(deliveryStatusConverter);
            builder.OwnsOne(p => p.PhysicalParameters,
                            parameters =>
            {
                parameters.Property(p => p.Height).HasColumnName("height").IsRequired();
                parameters.Property(p => p.Length).HasColumnName("length").IsRequired();
                parameters.Property(p => p.Weight).HasColumnName("weight").IsRequired();
                parameters.Property(p => p.Width).HasColumnName("width").IsRequired();
            });
            builder.OwnsOne(p => p.DeliveryDetails,
                            parameters =>
            {
                parameters.Property(p => p.FromCity).HasColumnName("from_city").IsRequired();
                parameters.Property(p => p.ToCity).HasColumnName("to_city").IsRequired();
                parameters.Property(p => p.Sender).HasColumnName("sender").IsRequired();
                parameters.Property(p => p.Receiver).HasColumnName("receiver").IsRequired();
            });

            builder.Property(p => p.Created).HasColumnName("created");
            builder.Property(p => p.CreatedBy).HasColumnName("created_by");
            builder.Property(p => p.LastModified).HasColumnName("last_modified");
            builder.Property(p => p.LastModifiedBy).HasColumnName("last_modified_by");

            builder.HasOne(p => p.Shipment)
            .WithMany(p => p.Packages);
        }
示例#15
0
        // public override void Dispose()
        // {
        //     base.Dispose();
        //     _writer.Dispose();
        // }
        #endregion

        #region Filtro Global
        // protected override void OnModelCreating(ModelBuilder modelBuilder)
        // {
        //     //Filtro Global
        //     //modelBuilder.Entity<Departamento>().HasQueryFilter(p => !p.Excluido);
        // }
        #endregion

        #region Collate e Sequence
        // protected override void OnModelCreating(ModelBuilder modelBuilder)
        // {
        //     modelBuilder.UseCollation("SQL_Latin1_General_CP1_CI_AI");
        //     //CI = Não Use Case Sensitive => Icaro == icaro
        //     //AI = Não use Sensitive de Acentuação => Ícaro == Icaro

        //     modelBuilder.Entity<Departamento>().Property(p => p.Descricao).UseCollation("SQL_Latin1_General_CP1_CS_AS");
        //     //CS = Use Case Sensitive => Icaro != icaro
        //     //AS = Use Sensitive de Acentuação => Ícaro != Icaro

        //     modelBuilder.HasSequence<int>("MinhaSequencia", "sequencias") //Tipos aceitos => int, byte e long (padrão)
        //     .StartsAt(1) //Inicia em
        //     .IncrementsBy(2) //Incrementa de 2 em 2
        //     .HasMin(1) // Minimo
        //     .HasMax(10) //Maximo (chegouno maximo da exception ou vai pro cyclic)
        //     .IsCyclic(); // Reseta a contagem

        //     modelBuilder.Entity<Departamento>().Property(p => p.Id).HasDefaultValueSql("NEXT VALUE FOR sequencias.MinhaSequencia");
        // }

        #endregion

        #region Indices
        // protected override void OnModelCreating(ModelBuilder modelBuilder)
        // {
        //     modelBuilder.Entity<Departamento>()
        //     //.HasIndex(p => p.Descricao);
        //     .HasIndex(p => new { p.Descricao, p.Ativo })
        //     .HasDatabaseName("idx_meu_indice_composto")
        //     .HasFilter("Descricao IS NOT NULL")
        //     .HasFillFactor(80) //20% para uso de preenchimento de dados pelo SQL Server
        //     .IsUnique();
        // }
        #endregion

        #region Propagação de Dados
        // protected override void OnModelCreating(ModelBuilder modelBuilder)
        // {
        //     modelBuilder.Entity<Estado>().HasData(new[]
        //     {
        //         new Estado {Id = 1, Nome = "São Paulo" },
        //         new Estado {Id = 2, Nome = "Minas Gerais" }
        //     });
        // }
        #endregion

        #region Esquemas e Conversores
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // modelBuilder.HasDefaultSchema("cadastros");

            // modelBuilder.Entity<Estado>().ToTable("Estados", "SegundoEsquema");

            var conversao = new ValueConverter <Versao, string>(
                p => p.ToString(), p => (Versao)Enum.Parse(typeof(Versao), p)
                );

            var conversao1 = new EnumToStringConverter <Versao>();

            modelBuilder.Entity <Conversor>()
            .Property(p => p.Versao)
            .HasConversion(conversao1);
            //.HasConversion(conversao);
            //.HasConversion(p => p.ToString(), p => (Versao)Enum.Parse(typeof(Versao), p));
            //.HasConversion<string>();

            modelBuilder.Entity <Conversor>()
            .Property(p => p.Status)
            .HasConversion(new Curso.Conversores.ConversorCustomizado());
        }
示例#16
0
        public static EnumToStringConverter <Values> FluentInitAndSeed(ModelBuilder modelBuilder)
        {
            var converter = new EnumToStringConverter <Values>();

            modelBuilder.Entity <TransactionStatus>(entity => {
                entity.HasKey(e => e.V);
                entity.Property(e => e.V).HasConversion(converter);
            });

            var values = Enum.GetValues(typeof(Values)).Cast <Values>();

            foreach (var v in values)
            {
                modelBuilder.Entity <TransactionStatus>(entity =>
                {
                    entity.HasData(new TransactionStatus()
                    {
                        V = v
                    });
                });
            }
            return(converter);
        }
示例#17
0
        public void Configure(EntityTypeBuilder <Taxonomy> builder)
        {
            var converter = new EnumToStringConverter <TaxonomyTypeEnum>();

            builder
            .Property(tt => tt.Type)
            .HasConversion(converter);

            builder
            .HasOne(tt => tt.CreatedBy)
            .WithMany(u => u.CreatedTaxonomies)
            .HasForeignKey(tt => tt.CreatedById);

            builder
            .HasOne(tt => tt.ModifiedBy)
            .WithMany(u => u.ModifiedTaxonomies)
            .HasForeignKey(tt => tt.ModifiedById);

            builder
            .HasMany(tt => tt.ChildTaxonomies)
            .WithOne(tt => tt.Parent)
            .HasForeignKey(tt => tt.ParentId);
        }
        public void Configure(EntityTypeBuilder <Document> builder)
        {
            var converter = new EnumToStringConverter <DocumentType>();

            builder.Property(p => p.DocumentType).HasConversion(converter);

            builder.Property(p => p.CreatedOn)
            .HasDefaultValueSql("CONVERT(date, GETDATE())");


            builder.Property(p => p.CreatedOn)
            .ValueGeneratedOnAdd();
            // [DatabaseGenerator(DatabasseGenerationOptions.Identity)]

            builder.Property(p => p.UpdatedOn)
            .ValueGeneratedOnUpdate();
            // [DatabaseGenerator(DatabasseGenerationOptions.Computed)]

            DocumentFaker documentFaker = new DocumentFaker();
            var           documents     = documentFaker.Generate(20);

            builder.HasData(documents);
        }
示例#19
0
        public void Configure(EntityTypeBuilder <Attachment> builder)
        {
            var attachmentTypeConverter = new EnumToStringConverter <AttachmentTypeEnum>();

            builder
            .Property(a => a.Type)
            .HasConversion(attachmentTypeConverter);

            var UploadLocationConverter = new EnumToStringConverter <UploadLocationEnum>();

            builder
            .Property(a => a.UploadLocation)
            .HasConversion(UploadLocationConverter);

            builder
            .HasOne(a => a.CreatedBy)
            .WithMany(u => u.CreatedAttachments)
            .HasForeignKey(a => a.CreatedById);
            builder
            .HasOne(a => a.ModifiedBy)
            .WithMany(u => u.ModifiedAttachments)
            .HasForeignKey(a => a.ModifiedById);
        }
示例#20
0
 protected override void OnModelCreating(ModelBuilder builder)
 {
     base.OnModelCreating(builder);
     #region 验证模型
     builder.Entity <TodoItem>(entity =>
     {
         entity.ToTable("TodoItme_StartOne");
         entity.HasKey(e => e.Id);
         entity.Property(e => e.Id).ValueGeneratedOnAdd();
         entity.Property(e => e.IsComplete).HasColumnType("bit").HasDefaultValue(1);//默认值
         #region 枚举类型装换
         ////方法一
         //entity.Property(e => e.state).HasConversion(v => v.ToString(), v => (StateCode)Enum.Parse(typeof(StateCode), v));//枚举类型装换
         ////方法二
         //var converter = new ValueConverter<StateCode, string>(v => v.ToString(), v => (StateCode)Enum.Parse(typeof(StateCode), v));
         //entity.Property(e => e.state).HasConversion(converter);
         //方法三
         var converter1 = new EnumToStringConverter <StateCode>();
         entity.Property(e => e.state).HasConversion(converter1);
         #endregion
     });
     #endregion
 }
示例#21
0
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            // Customize the ASP.NET Identity model and override the defaults if needed.
            // For example, you can rename the ASP.NET Identity table names and more.
            // Add your customizations after calling base.OnModelCreating(builder);

            var converter = new EnumToStringConverter <Level>();

            builder
            .Entity <Work>()
            .Property(work => work.Difficulty)
            .HasConversion(converter);

            builder
            .Entity <Work>()
            .Property(work => work.Duration)
            .HasConversion(converter);

            builder
            .Entity <Work>()
            .Property(work => work.Priority)
            .HasConversion(converter);
        }
        public DebugOutputFilterStrategy()
        {
            if (Application.Current != null)
            {
                _timeSpanToStringConverter = Application.Current.Resources["TimeSpanToStringConverter"] as TimeSpanToStringConverter;
                _dateTimeToStringConverter = Application.Current.Resources["DateTimeToStringConverter"] as DateTimeToStringConverter;
                _enumToStringConverter     = Application.Current.Resources["EnumToStringConverter"] as EnumToStringConverter;
            }

            if (_timeSpanToStringConverter == null)
            {
                _timeSpanToStringConverter = new TimeSpanToStringConverter();
            }

            if (_dateTimeToStringConverter == null)
            {
                _dateTimeToStringConverter = new DateTimeToStringConverter();
            }

            if (_enumToStringConverter == null)
            {
                _enumToStringConverter = new EnumToStringConverter();
            }
        }
        public void Configure(EntityTypeBuilder <PlexLibrary> builder)
        {
            builder
            .HasMany(x => x.Movies)
            .WithOne(x => x.PlexLibrary)
            .HasForeignKey(x => x.PlexLibraryId)
            .OnDelete(DeleteBehavior.Cascade);

            builder
            .HasMany(x => x.TvShows)
            .WithOne(x => x.PlexLibrary)
            .HasForeignKey(x => x.PlexLibraryId)
            .OnDelete(DeleteBehavior.Cascade);

            var converter = new EnumToStringConverter <PlexMediaType>();

            builder
            .Property(e => e.Type)
            .HasConversion(converter);

            builder
            .Property(x => x.MetaData)
            .HasJsonValueConversion();
        }
示例#24
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var ETSConverter = new EnumToStringConverter <Enums.StatusState>();

            modelBuilder.Entity <Status>().Property(s => s.State).HasConversion(ETSConverter);
        }
示例#25
0
        public void Configure(EntityTypeBuilder <Operation> builder)
        {
            builder.ToTable("Operations", "dbo");

            builder.HasKey(p => p.Id);
            builder.Property(p => p.Id).UseSqlServerIdentityColumn();

            builder.Property(p => p.Name).HasColumnType("nvarchar(50)").IsRequired();

            var converter = new EnumToStringConverter <OperationGroups>();

            builder.Property(p => p.Group).HasConversion(converter).HasColumnType("varchar(16)").IsRequired();

            builder.Property(p => p.Complexity).HasColumnType("real");

            builder.HasData(new Operation[] {
                new Operation {
                    Id = 1, Name = "Сканирование товара", Group = OperationGroups.Reception, Complexity = (float)1.0
                },
                new Operation {
                    Id = 2, Name = "Сканирование транзитов", Group = OperationGroups.Reception, Complexity = (float)1.0
                },

                new Operation {
                    Id = 3, Name = "Размещение товара", Group = OperationGroups.Placing, Complexity = (float)1.0
                },
                new Operation {
                    Id = 4, Name = "Перемещение товара", Group = OperationGroups.Placing, Complexity = (float)1.0
                },
                new Operation {
                    Id = 5, Name = "Подтоварка", Group = OperationGroups.Defragmentation, Complexity = (float)1.0
                },
                new Operation {
                    Id = 6, Name = "Верт. дефрагментация", Group = OperationGroups.Defragmentation, Complexity = (float)1.0
                },
                new Operation {
                    Id = 7, Name = "Гор. дефрагментация", Group = OperationGroups.Defragmentation, Complexity = (float)1.0
                },

                new Operation {
                    Id = 8, Name = "Подбор товара", Group = OperationGroups.Gathering, Complexity = (float)1.0
                },
                new Operation {
                    Id = 9, Name = "Подбор клиентского товара", Group = OperationGroups.Gathering, Complexity = (float)1.0
                },
                new Operation {
                    Id = 11, Name = "Предварительный подбор товара", Group = OperationGroups.Gathering, Complexity = (float)1.0
                },
                new Operation {
                    Id = 10, Name = "Подбор товаров покупателей", Group = OperationGroups.BuyerGathering, Complexity = (float)1.0
                },
                new Operation {
                    Id = 12, Name = "Упаковка товара в места", Group = OperationGroups.Placing, Complexity = (float)1.0
                },

                new Operation {
                    Id = 13, Name = "Инвентаризация", Group = OperationGroups.Inventory, Complexity = (float?)1.0
                },

                new Operation {
                    Id = 14, Name = "Выгрузка машины", Group = OperationGroups.Shipment, Complexity = (float)1.0
                },
                new Operation {
                    Id = 15, Name = "Погрузка машины", Group = OperationGroups.Shipment, Complexity = (float)1.0
                },

                new Operation {
                    Id = 16, Name = "Прочие операции", Group = OperationGroups.Other, Complexity = (float)1.0
                },
            });
        }
示例#26
0
文件: MEMOContext.cs 项目: mzsb/MEMO
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            const string AdministratorRoleName = "Administrator";

            modelBuilder.Entity <IdentityRole <Guid> >().HasData(new IdentityRole <Guid>
            {
                Id             = Guid.NewGuid(),
                Name           = AdministratorRoleName,
                NormalizedName = AdministratorRoleName.ToUpper()
            });

            const string UserRoleName = "User";

            modelBuilder.Entity <IdentityRole <Guid> >().HasData(new IdentityRole <Guid>
            {
                Id             = Guid.NewGuid(),
                Name           = UserRoleName,
                NormalizedName = UserRoleName.ToUpper()
            });

            var languageCodes = Enum.GetValues(typeof(LanguageCode)).Cast <LanguageCode>();

            foreach (var languageCode in languageCodes)
            {
                modelBuilder.Entity <Language>().HasData(new Language
                {
                    Id           = Guid.NewGuid(),
                    LanguageCode = languageCode
                });
            }

            modelBuilder.Entity <Language>()
            .HasMany(l => l.DictionaryLanguages)
            .WithOne(dl => dl.Language)
            .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity <Entities.Attribute>()
            .HasMany(a => a.AttributeValues)
            .WithOne(av => av.Attribute)
            .OnDelete(DeleteBehavior.Cascade);

            var userTypeConverter = new EnumToStringConverter <UserType>();

            modelBuilder.Entity <UserDictionary>()
            .Property(ud => ud.Type)
            .HasConversion(userTypeConverter);


            var attributeTypeConverter = new EnumToStringConverter <AttributeType>();

            modelBuilder.Entity <Entities.Attribute>()
            .Property(a => a.Type)
            .HasConversion(attributeTypeConverter);

            var languageTypeConverter = new EnumToStringConverter <LanguageType>();

            modelBuilder.Entity <DictionaryLanguage>()
            .Property(dl => dl.Type)
            .HasConversion(languageTypeConverter);

            var languageCodeConverter = new EnumToStringConverter <LanguageCode>();

            modelBuilder.Entity <Language>()
            .Property(l => l.LanguageCode)
            .HasConversion(languageCodeConverter);
        }
示例#27
0
        public void ConfigureAddressNotes(EntityTypeBuilder <AddressNote> builder)
        {
            builder.HasKey(ci => ci.NoteDbId);

            builder.Property(ci => ci.NoteDbId)
            .IsConcurrencyToken(true)
            .IsRowVersion()
            .ValueGeneratedOnAdd()
            .UseSqlServerIdentityColumn();

            builder
            .HasOne(n => n.address)
            .WithMany(a => a.Notes);
            //.HasForeignKey(c => c.RouteDestinationId);

            //builder
            //    .HasOne(n => n.route)
            //    .WithMany(r => r.Notes);


            //builder.Property(n => n.RouteId)
            //    .HasMaxLength(32)
            //    .IsUnicode(false);

            builder.Property(n => n.UploadId)
            .HasMaxLength(32)
            .IsUnicode(false);

            var statusUpdateTypeConverter = new EnumToStringConverter <Enum.StatusUpdateType>();

            builder.Property(n => n.StatusUpdateType)
            .HasConversion(statusUpdateTypeConverter)
            .HasMaxLength(32)
            .IsUnicode(false);

            var uploadTypeConverter = new EnumToStringConverter <Enum.UploadType>();

            builder.Property(n => n.UploadType)
            .HasConversion(uploadTypeConverter)
            .HasMaxLength(32)
            .IsUnicode(false);

            builder.Property(n => n.UploadUrl)
            .HasMaxLength(250)
            .IsUnicode(false);

            builder.Property(n => n.UploadExtension)
            .HasMaxLength(16)
            .IsUnicode(false);

            var deviceTypeConverter = new EnumToStringConverter <Enum.DeviceType>();

            builder.Property(n => n.DeviceType)
            .HasConversion(deviceTypeConverter)
            .HasMaxLength(32)
            .IsUnicode(false);

            //builder.HasData(
            //    new AddressNote()
            //    {
            //        NoteDbId = -1,
            //        Contents = "Note example",
            //        DeviceType = Enum.DeviceType.Web,
            //        UploadType = Enum.UploadType.AnyFile,
            //        StatusUpdateType = Enum.StatusUpdateType.DropOff,
            //        IsInactive = true,
            //        Latitude = 95.85441,
            //        Longitude = -250.65418,
            //        UploadExtension = "jpg",
            //        NoteId = 111111,
            //        RouteDestinationId = 363044949
            //        //RouteId = "76DF97A0AB51EAC8B90D75700A3BBFBF"
            //    }
            //    );
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("ProductVersion", "2.2.6-servicing-10079");

            #region enum converters

            /*
             * Converters do not nicely handle null values, outputting 'NULL' string into the database.
             * This isn't a major issue though, as the mapping in application is accurate.
             */
            var statusEnumConverter                  = new EnumToStringConverter <Status>();
            var dotStatusEnumConverter               = new EnumToStringConverter <DotStatus>();
            var healthcareSettingEnumConverter       = new EnumToStringConverter <HealthcareSetting>();
            var hivStatusEnumConverter               = new EnumToStringConverter <HIVTestStatus>();
            var riskFactorEnumConverter              = new EnumToStringConverter <RiskFactorType>();
            var notificationStatusEnumConverter      = new EnumToStringConverter <NotificationStatus>();
            var denotificationReasonEnumConverter    = new EnumToStringConverter <DenotificationReason>();
            var testResultEnumConverter              = new EnumToStringConverter <Result>();
            var alertStatusEnumConverter             = new EnumToStringConverter <AlertStatus>();
            var alertTypeEnumConverter               = new EnumToStringConverter <AlertType>();
            var frequencyEnumConverter               = new EnumToStringConverter <Frequency>();
            var treatmentEventTypeEnumConverter      = new EnumToStringConverter <TreatmentEventType>();
            var treatmentOutcomeTypeEnumConverter    = new EnumToStringConverter <TreatmentOutcomeType>();
            var treatmentOutcomeSubTypeEnumConverter = new EnumToStringConverter <TreatmentOutcomeSubType>();
            var transferReasonEnumConverter          = new EnumToStringConverter <TransferReason>();
            var exposureSettingEnumConverter         = new EnumToStringConverter <ExposureSetting>();
            var milkProductEnumConverter             = new EnumToStringConverter <MilkProductType>();
            var consumptionFrequencyEnumConverter    = new EnumToStringConverter <ConsumptionFrequency>();
            var occupationSettingEnumConverter       = new EnumToStringConverter <OccupationSetting>();
            var animalTypeEnumConverter              = new EnumToStringConverter <AnimalType>();
            var animalTbStatusEnumConverter          = new EnumToStringConverter <AnimalTbStatus>();
            var treatmentRegimentEnumConverter       = new EnumToStringConverter <TreatmentRegimen>();
            var logMessageLevelEnumConverter         = new EnumToStringConverter <LogMessageLevel>();

            #endregion

            modelBuilder.Entity <ReleaseVersion>(entity =>
                                                 entity.HasKey(rv => rv.Version)
                                                 );

            modelBuilder.Entity <Country>(entity =>
            {
                entity.Property(e => e.Name).HasMaxLength(200);
                entity.HasIndex(e => new { e.IsLegacy, e.Name });

                entity.ToTable(nameof(Country), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.Countries.GetCountriesArray());
            });

            modelBuilder.Entity <Continent>(entity =>
            {
                entity.ToTable(nameof(Continent), ReferenceDataSchemaName);
                entity.HasData(Models.SeedData.Continents.GetContinents());
            });

            modelBuilder.Entity <Ethnicity>(entity =>
            {
                entity.Property(e => e.Code).HasMaxLength(50);

                entity.Property(e => e.Label).HasMaxLength(200);

                entity.ToTable(nameof(Ethnicity), ReferenceDataSchemaName);

                entity.HasData(
                    new Ethnicity {
                    EthnicityId = 1, Code = "WW", Label = "White", Order = 1
                },
                    new Ethnicity {
                    EthnicityId = 8, Code = "H", Label = "Indian", Order = 2
                },
                    new Ethnicity {
                    EthnicityId = 9, Code = "J", Label = "Pakistani", Order = 3
                },
                    new Ethnicity {
                    EthnicityId = 10, Code = "K", Label = "Bangladeshi", Order = 4
                },
                    new Ethnicity {
                    EthnicityId = 11, Code = "L", Label = "Any other Asian background", Order = 5
                },
                    new Ethnicity {
                    EthnicityId = 13, Code = "N", Label = "Black African", Order = 6
                },
                    new Ethnicity {
                    EthnicityId = 12, Code = "M", Label = "Black Caribbean", Order = 7
                },
                    new Ethnicity {
                    EthnicityId = 14, Code = "P", Label = "Any other Black Background", Order = 8
                },
                    new Ethnicity {
                    EthnicityId = 16, Code = "R", Label = "Chinese", Order = 9
                },
                    new Ethnicity {
                    EthnicityId = 6, Code = "F", Label = "Mixed - White and Asian", Order = 10
                },
                    new Ethnicity {
                    EthnicityId = 5, Code = "E", Label = "Mixed - White and Black African", Order = 11
                },
                    new Ethnicity
                {
                    EthnicityId = 4,
                    Code        = "D",
                    Label       = "Mixed - White and Black Caribbean",
                    Order       = 12
                },
                    new Ethnicity {
                    EthnicityId = 7, Code = "G", Label = "Any other mixed background", Order = 13
                },
                    new Ethnicity {
                    EthnicityId = 15, Code = "S", Label = "Any other ethnic group", Order = 14
                },
                    new Ethnicity {
                    EthnicityId = Ethnicities.NotStatedId, Code = "Z", Label = "Not stated", Order = 15
                }
                    );
            });

            modelBuilder.Entity <TBService>(entity =>
            {
                entity.Property(e => e.Code).HasMaxLength(16).ValueGeneratedOnAdd();
                entity.HasKey(e => e.Code);
                entity.Property(e => e.Name).HasMaxLength(200);

                /*
                 *  TB services have TB service AD group associated with them in a 1-1
                 *  mapping. PHEC AD groups are defined on the PHEC model itself, which has a many-to-one mapping to TB Service through TBServiceToPHEC.
                 *  AD groups have a length limit if 64 characters, see
                 *  https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc756101(v=ws.10)?redirectedfrom=MSDN#fqdn-length-limitations
                 */
                entity.Property(e => e.ServiceAdGroup).HasMaxLength(64);
                entity.HasIndex(e => e.ServiceAdGroup).IsUnique();
                entity.HasIndex(e => e.Name);
                entity.HasIndex(e => new { e.IsLegacy, e.Name });

                entity.HasOne(e => e.PHEC)
                .WithMany()
                .HasForeignKey(tb => tb.PHECCode);

                entity.ToTable(nameof(TbService), ReferenceDataSchemaName);
            });

            modelBuilder.Entity <Hospital>(entity =>
            {
                entity.ToTable(nameof(Hospital), ReferenceDataSchemaName);
            });

            modelBuilder.Entity <PHEC>(entity =>
            {
                entity.HasKey(e => e.Code);
                entity.Property(e => e.Code).ValueGeneratedOnAdd();

                entity.ToTable(nameof(PHEC), ReferenceDataSchemaName);
            });

            modelBuilder.Entity <LocalAuthority>(entity =>
            {
                entity.HasKey(e => e.Code);

                entity.Property(e => e.Code).ValueGeneratedOnAdd();

                entity.ToTable(nameof(LocalAuthority), ReferenceDataSchemaName);
            });

            modelBuilder.Entity <LocalAuthorityToPHEC>(entity =>
            {
                entity.HasKey(e => new { e.PHECCode, e.LocalAuthorityCode });

                entity.HasOne(e => e.LocalAuthority)
                .WithOne(x => x.LocalAuthorityToPHEC)
                .HasForeignKey <LocalAuthorityToPHEC>(la => la.LocalAuthorityCode)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.HasOne(e => e.PHEC)
                .WithMany()
                .HasForeignKey(la => la.PHECCode)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.ToTable(nameof(LocalAuthorityToPHEC), ReferenceDataSchemaName);
            });

            modelBuilder.Entity <PostcodeLookup>(entity =>
            {
                entity.HasKey(e => e.Postcode);
                entity.Property(e => e.Postcode).ValueGeneratedOnAdd();
                entity.HasOne(e => e.LocalAuthority)
                .WithMany(c => c.PostcodeLookups)
                .HasForeignKey(ns => ns.LocalAuthorityCode);

                entity.ToTable(nameof(PostcodeLookup), ReferenceDataSchemaName);

                // We don't use HasData to populate postcode lookup due to the size of this dataset -
                // it would completely clog up any EF actions. We've used manually created migrations instead.
            });

            modelBuilder.Entity <PatientDetails>(entity =>
            {
                entity.HasKey(pd => pd.NotificationId);

                entity.HasOne(pd => pd.PostcodeLookup)
                .WithMany()
                .HasForeignKey(ns => ns.PostcodeToLookup);

                entity.ToTable("Patients");
            });

            modelBuilder.Entity <HospitalDetails>(entity =>
            {
                entity.HasKey(pd => pd.NotificationId);

                entity.HasOne(hd => hd.CaseManager).WithMany();

                entity.ToTable("HospitalDetails");
            });

            modelBuilder.Entity <Notification>(entity =>
            {
                entity.HasOne(n => n.Group)
                .WithMany(g => g.Notifications)
                .HasForeignKey(e => e.GroupId);

                entity.HasOne(n => n.PatientDetails)
                .WithOne()
                .OnDelete(DeleteBehavior.Cascade);

                entity.HasOne(n => n.HospitalDetails)
                .WithOne()
                .OnDelete(DeleteBehavior.Cascade);

                entity.OwnsOne(e => e.ClinicalDetails,
                               e =>
                {
                    e.Property(cd => cd.BCGVaccinationState)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.DotStatus)
                    .HasConversion(dotStatusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.HomeVisitCarriedOut)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.HealthcareSetting)
                    .HasConversion(healthcareSettingEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.EnhancedCaseManagementStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.HIVTestState)
                    .HasConversion(hivStatusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.IsDotOffered)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.Notes)
                    .HasMaxLength(1000);
                    e.Property(c => c.TreatmentRegimen)
                    .HasConversion(treatmentRegimentEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(c => c.TreatmentRegimenOtherDescription)
                    .HasMaxLength(100);
                    e.Property(c => c.EnhancedCaseManagementLevel)
                    .HasDefaultValue(0);
                    e.ToTable("ClinicalDetails");
                });

                entity.OwnsOne(e => e.PreviousTbHistory,
                               e =>
                {
                    e.Property(ph => ph.PreviouslyTreated)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.Property(ph => ph.PreviouslyHadTb)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    e.ToTable("PreviousTbHistory");
                });

                entity.OwnsOne(e => e.ContactTracing).ToTable("ContactTracing");

                entity.OwnsOne(e => e.SocialRiskFactors,
                               x =>
                {
                    x.OwnsOne(c => c.RiskFactorDrugs,
                              rf =>
                    {
                        rf.Property(e => e.Status)
                        .HasConversion(statusEnumConverter)
                        .HasMaxLength(EnumMaxLength);
                        rf.Property(e => e.Type)
                        .HasConversion(riskFactorEnumConverter)
                        .HasMaxLength(EnumMaxLength)
                        .HasDefaultValue(RiskFactorType.Drugs);
                        rf.ToTable("RiskFactorDrugs");
                    });

                    x.OwnsOne(c => c.RiskFactorHomelessness,
                              rh =>
                    {
                        rh.Property(e => e.Status)
                        .HasConversion(statusEnumConverter)
                        .HasMaxLength(EnumMaxLength);
                        rh.Property(e => e.Type)
                        .HasConversion(riskFactorEnumConverter)
                        .HasMaxLength(EnumMaxLength)
                        .HasDefaultValue(RiskFactorType.Homelessness);
                        rh.ToTable("RiskFactorHomelessness");
                    });

                    x.OwnsOne(c => c.RiskFactorImprisonment,
                              rh =>
                    {
                        rh.Property(e => e.Status)
                        .HasConversion(statusEnumConverter)
                        .HasMaxLength(EnumMaxLength);
                        rh.Property(e => e.Type)
                        .HasConversion(riskFactorEnumConverter)
                        .HasMaxLength(EnumMaxLength)
                        .HasDefaultValue(RiskFactorType.Imprisonment);
                        rh.ToTable("RiskFactorImprisonment");
                    });

                    x.OwnsOne(c => c.RiskFactorSmoking,
                              rf =>
                    {
                        rf.Property(e => e.Status)
                        .HasConversion(statusEnumConverter)
                        .HasMaxLength(EnumMaxLength);
                        rf.Property(e => e.Type)
                        .HasConversion(riskFactorEnumConverter)
                        .HasMaxLength(EnumMaxLength)
                        .HasDefaultValue(RiskFactorType.Smoking);
                        rf.ToTable("RiskFactorSmoking");
                    });

                    x.Property(e => e.AlcoholMisuseStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    x.Property(e => e.MentalHealthStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    x.Property(e => e.AsylumSeekerStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    x.Property(e => e.ImmigrationDetaineeStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);

                    x.ToTable("SocialRiskFactors");
                });

                entity.Property(e => e.NotificationStatus)
                .HasConversion(notificationStatusEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.OwnsOne(e => e.ImmunosuppressionDetails,
                               i =>
                {
                    i.Property(e => e.Status)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    i.ToTable("ImmunosuppressionDetails");
                });

                entity.OwnsOne(e => e.TravelDetails,
                               x =>
                {
                    x.Property(td => td.HasTravel)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    x.ToTable("TravelDetails");
                });
                entity.OwnsOne(e => e.VisitorDetails,
                               x =>
                {
                    x.Property(vd => vd.HasVisitor)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    x.ToTable("VisitorDetails");
                });
                entity.OwnsOne(e => e.ComorbidityDetails,
                               cd =>
                {
                    cd.Property(e => e.DiabetesStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    cd.Property(e => e.HepatitisBStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    cd.Property(e => e.HepatitisCStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    cd.Property(e => e.LiverDiseaseStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    cd.Property(e => e.RenalDiseaseStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);

                    cd.ToTable("ComorbidityDetails");
                });

                entity.OwnsOne(e => e.DenotificationDetails,
                               i =>
                {
                    i.Property(e => e.Reason)
                    .HasConversion(denotificationReasonEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    i.ToTable("DenotificationDetails");
                });

                entity.OwnsOne(e => e.MDRDetails,
                               i =>
                {
                    i.Property(e => e.ExposureToKnownCaseStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    i.Property(e => e.NotifiedToPheStatus)
                    .HasConversion(statusEnumConverter)
                    .HasMaxLength(EnumMaxLength);
                    i.ToTable("MDRDetails");
                });

                entity.OwnsMany(e => e.PreviousTbServices)
                .ToTable("PreviousTbService")
                .HasKey(e => e.PreviousTbServiceId);

                entity.HasIndex(e => e.NotificationStatus);

                entity.HasIndex(e => new { e.NotificationStatus, e.SubmissionDate });
                entity.HasIndex(e => e.LTBRID).IsUnique();
                entity.HasIndex(e => e.ETSID).IsUnique();
                entity.HasIndex(e => e.LTBRPatientId);
                entity.HasIndex(e => e.ClusterId);

                entity.ToTable("Notification");
            });

            modelBuilder.Entity <Sex>(entity =>
            {
                entity.Property(e => e.Label).HasMaxLength(200);

                entity.ToTable(nameof(Sex), ReferenceDataSchemaName);

                entity.HasData(
                    new Sex {
                    SexId = 1, Label = "Male"
                },
                    new Sex {
                    SexId = 2, Label = "Female"
                },
                    new Sex {
                    SexId = Sexes.UnknownId, Label = Sexes.UnknownLabel
                }
                    );
            });

            modelBuilder.Entity <NotificationSite>(entity =>
            {
                entity.HasKey(e => new { e.NotificationId, e.SiteId });

                entity.HasOne(e => e.Site)
                .WithMany(s => s.NotificationSites)
                .HasForeignKey(ns => ns.SiteId);
            });

            modelBuilder.Entity <Site>(entity =>
            {
                entity.ToTable(nameof(Site), ReferenceDataSchemaName);

                entity.HasData(
                    new Site {
                    SiteId = (int)SiteId.PULMONARY, Description = "Pulmonary", OrderIndex = 1
                },
                    new Site {
                    SiteId = (int)SiteId.BONE_SPINE, Description = "Spine", OrderIndex = 4
                },
                    new Site {
                    SiteId = (int)SiteId.BONE_OTHER, Description = "Bone/joint: Other", OrderIndex = 5
                },
                    new Site {
                    SiteId = (int)SiteId.CNS_MENINGITIS, Description = "Meningitis", OrderIndex = 6
                },
                    new Site {
                    SiteId = (int)SiteId.CNS_OTHER, Description = "CNS: Other", OrderIndex = 7
                },
                    new Site {
                    SiteId = (int)SiteId.OCULAR, Description = "Ocular", OrderIndex = 13
                },
                    new Site {
                    SiteId = (int)SiteId.CRYPTIC, Description = "Cryptic disseminated", OrderIndex = 10
                },
                    new Site {
                    SiteId = (int)SiteId.GASTROINTESTINAL, Description = "Gastrointestinal/peritoneal", OrderIndex = 11
                },
                    new Site {
                    SiteId = (int)SiteId.GENITOURINARY, Description = "Genitourinary", OrderIndex = 12
                },
                    new Site {
                    SiteId = (int)SiteId.LYMPH_INTRA, Description = "Lymph nodes: Intra-thoracic", OrderIndex = 8
                },
                    new Site {
                    SiteId = (int)SiteId.LYMPH_EXTRA, Description = "Lymph nodes: Extra-thoracic", OrderIndex = 9
                },
                    new Site {
                    SiteId = (int)SiteId.LARYNGEAL, Description = "Laryngeal", OrderIndex = 2
                },
                    new Site {
                    SiteId = (int)SiteId.MILIARY, Description = "Miliary", OrderIndex = 3
                },
                    new Site {
                    SiteId = (int)SiteId.PLEURAL, Description = "Pleural", OrderIndex = 14
                },
                    new Site {
                    SiteId = (int)SiteId.PERICARDIAL, Description = "Pericardial", OrderIndex = 15
                },
                    new Site {
                    SiteId = (int)SiteId.SKIN, Description = "Soft tissue/Skin", OrderIndex = 16
                },
                    new Site {
                    SiteId = (int)SiteId.OTHER, Description = "Other extra-pulmonary", OrderIndex = 17
                }
                    );
            });

            modelBuilder.Entity <Occupation>(entity =>
            {
                entity.Property(e => e.Role).HasMaxLength(40);
                entity.Property(e => e.Sector).HasMaxLength(40);

                entity.ToTable(nameof(Occupation), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.Occupations.GetOccupations());
            });

            modelBuilder.Entity <User>(entity =>
            {
                entity.Property(e => e.Id).ValueGeneratedOnAdd();
                entity.Property(e => e.Username).HasMaxLength(64);
                entity.Property(e => e.FamilyName).HasMaxLength(64);
                entity.Property(e => e.GivenName).HasMaxLength(64);
                entity.Property(e => e.DisplayName).HasMaxLength(256);
                entity.Property(e => e.JobTitle).HasMaxLength(100);
                entity.Property(e => e.PhoneNumberPrimary).HasMaxLength(100);
                entity.Property(e => e.PhoneNumberSecondary).HasMaxLength(100);
                entity.Property(e => e.EmailPrimary).HasMaxLength(100);
                entity.Property(e => e.EmailSecondary).HasMaxLength(100);
                entity.Property(e => e.Notes).HasMaxLength(500);

                entity.HasIndex(e => e.Username).IsUnique();

                entity.HasKey(e => e.Id);
            });

            modelBuilder.Entity <CaseManagerTbService>(entity =>
            {
                entity.Property(e => e.TbServiceCode).HasMaxLength(16);

                entity.HasKey(e => new { e.CaseManagerId, e.TbServiceCode });

                entity.HasOne(e => e.CaseManager)
                .WithMany(caseManager => caseManager.CaseManagerTbServices)
                .HasForeignKey(e => e.CaseManagerId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.HasOne(e => e.TbService)
                .WithMany(tbService => tbService.CaseManagerTbServices)
                .HasForeignKey(e => e.TbServiceCode)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <ManualTestType>(entity =>
            {
                entity.Property(e => e.Description).HasMaxLength(40);

                entity.ToTable(nameof(ManualTestType), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.ManualTestTypes.GetManualTestTypes());
            });

            modelBuilder.Entity <SampleType>(entity =>
            {
                entity.Property(e => e.Description).HasMaxLength(40);
                entity.Property(e => e.Category).HasMaxLength(40);

                entity.ToTable(nameof(SampleType), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.SampleTypes.GetSampleTypes());
            });

            modelBuilder.Entity <ManualTestTypeSampleType>(entity =>
            {
                entity.HasKey(e => new { e.ManualTestTypeId, e.SampleTypeId });

                entity.HasOne(e => e.ManualTestType)
                .WithMany(manualTestType => manualTestType.ManualTestTypeSampleTypes)
                .HasForeignKey(e => e.ManualTestTypeId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.HasOne(e => e.SampleType)
                .WithMany(sampleType => sampleType.ManualTestTypeSampleTypes)
                .HasForeignKey(e => e.SampleTypeId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.ToTable(nameof(ManualTestTypeSampleType), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.ManualTestTypeSampleTypes.GetJoinDataManualTestTypeToSampleType());
            });

            modelBuilder.Entity <TestData>(entity =>
            {
                entity.HasKey(e => e.NotificationId);
                entity.HasMany(e => e.ManualTestResults);
            });

            modelBuilder.Entity <ManualTestResult>(entity =>
            {
                entity.Property(e => e.Result)
                .HasConversion(testResultEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.HasOne(e => e.ManualTestType)
                .WithMany()
                .HasForeignKey(e => e.ManualTestTypeId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);

                entity.HasOne(e => e.SampleType)
                .WithMany()
                .HasForeignKey(e => e.SampleTypeId);

                entity.HasOne <TestData>()
                .WithMany(e => e.ManualTestResults)
                .HasForeignKey(e => e.NotificationId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <DrugResistanceProfile>(entity =>
            {
                entity.Property(e => e.Species)
                .IsRequired()
                .HasMaxLength(30)
                .HasDefaultValue("No result");
                entity.Property(e => e.DrugResistanceProfileString)
                .IsRequired()
                .HasMaxLength(30)
                .HasDefaultValue("No result");
                entity.ToTable("DrugResistanceProfile").HasKey(e => e.NotificationId);
            });

            modelBuilder.Entity <MBovisDetails>(entity =>
            {
                entity.Property(e => e.ExposureToKnownCasesStatus)
                .HasConversion(statusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.UnpasteurisedMilkConsumptionStatus)
                .HasConversion(statusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.OccupationExposureStatus)
                .HasConversion(statusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.AnimalExposureStatus)
                .HasConversion(statusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.ToTable("MBovisDetails").HasKey(e => e.NotificationId);
            });

            modelBuilder.Entity <MBovisExposureToKnownCase>(entity =>
            {
                entity.Property(e => e.ExposureSetting)
                .HasConversion(exposureSettingEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.NotifiedToPheStatus)
                .HasConversion(statusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.ToTable("MBovisExposureToKnownCase");
                entity.HasOne <MBovisDetails>()
                .WithMany(e => e.MBovisExposureToKnownCases)
                .HasForeignKey(e => e.NotificationId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <MBovisUnpasteurisedMilkConsumption>(entity =>
            {
                entity.Property(e => e.ConsumptionFrequency)
                .HasConversion(consumptionFrequencyEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.Property(e => e.MilkProductType)
                .HasConversion(milkProductEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.ToTable("MBovisUnpasteurisedMilkConsumption");
                entity.HasOne <MBovisDetails>()
                .WithMany(e => e.MBovisUnpasteurisedMilkConsumptions)
                .HasForeignKey(e => e.NotificationId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <MBovisOccupationExposure>(entity =>
            {
                entity.Property(e => e.OccupationSetting)
                .HasConversion(occupationSettingEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.ToTable("MBovisOccupationExposures");
                entity.HasOne <MBovisDetails>()
                .WithMany(e => e.MBovisOccupationExposures)
                .HasForeignKey(e => e.NotificationId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <MBovisAnimalExposure>(entity =>
            {
                entity.Property(e => e.AnimalType)
                .HasConversion(animalTypeEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.Property(e => e.AnimalTbStatus)
                .HasConversion(animalTbStatusEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.ToTable("MBovisAnimalExposure");
                entity.HasOne <MBovisDetails>()
                .WithMany(e => e.MBovisAnimalExposures)
                .HasForeignKey(e => e.NotificationId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired(false);
            });

            modelBuilder.Entity <Alert>(entity =>
            {
                entity.Property(e => e.AlertStatus)
                .HasConversion(alertStatusEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.ClosingUserId).HasMaxLength(64);
                entity.HasIndex(p => new { p.NotificationId, p.AlertType });
                entity.Property(e => e.AlertType)
                .HasConversion(alertTypeEnumConverter);
                entity.HasDiscriminator <AlertType>("AlertType")
                .HasValue <TestAlert>(AlertType.Test)
                .HasValue <MdrAlert>(AlertType.EnhancedSurveillanceMDR)
                .HasValue <MBovisAlert>(AlertType.EnhancedSurveillanceMBovis)
                .HasValue <TransferAlert>(AlertType.TransferRequest)
                .HasValue <TransferRejectedAlert>(AlertType.TransferRejected)
                .HasValue <UnmatchedLabResultAlert>(AlertType.UnmatchedLabResult)
                .HasValue <DataQualityDraftAlert>(AlertType.DataQualityDraft)
                .HasValue <DataQualityBirthCountryAlert>(AlertType.DataQualityBirthCountry)
                .HasValue <DataQualityClinicalDatesAlert>(AlertType.DataQualityClinicalDates)
                .HasValue <DataQualityClusterAlert>(AlertType.DataQualityCluster)
                .HasValue <DataQualityTreatmentOutcome12>(AlertType.DataQualityTreatmentOutcome12)
                .HasValue <DataQualityTreatmentOutcome24>(AlertType.DataQualityTreatmentOutcome24)
                .HasValue <DataQualityTreatmentOutcome36>(AlertType.DataQualityTreatmentOutcome36)
                .HasValue <DataQualityDotVotAlert>(AlertType.DataQualityDotVotAlert)
                .HasValue <DataQualityChildECMLevel>(AlertType.DataQualityChildECMLevel)
                .HasValue <DataQualityPotentialDuplicateAlert>(AlertType.DataQualityPotientialDuplicate);

                entity.HasIndex(e => new { e.AlertStatus, e.AlertType });
            });

            modelBuilder.Entity <TestAlert>().HasBaseType <Alert>();
            modelBuilder.Entity <TransferAlert>(entity =>
            {
                entity.Property(e => e.TransferReason)
                .HasConversion(transferReasonEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.TbServiceCode).HasColumnName("TbServiceCode").HasMaxLength(16);
                entity.HasOne(e => e.CaseManager)
                .WithMany()
                .HasForeignKey(e => e.CaseManagerId);
            });
            modelBuilder.Entity <UnmatchedLabResultAlert>(entity =>
            {
                entity.Property(e => e.SpecimenId).HasMaxLength(50);
            });

            modelBuilder.Entity <VenueType>(entity =>
            {
                entity.ToTable(nameof(VenueType), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.Venues.GetTypes());
            });

            modelBuilder.Entity <SocialContextVenue>(entity =>
            {
                entity.Property(e => e.Frequency)
                .HasConversion(frequencyEnumConverter)
                .HasMaxLength(EnumMaxLength);
            });

            modelBuilder.Entity <TreatmentEvent>(entity =>
            {
                entity.Property(e => e.TreatmentEventType)
                .HasConversion(treatmentEventTypeEnumConverter)
                .HasMaxLength(EnumMaxLength);
                entity.Property(e => e.Note)
                .HasMaxLength(1000);
                entity.HasOne(e => e.CaseManager)
                .WithMany()
                .HasForeignKey(e => e.CaseManagerId)
                .IsRequired(false);
                entity.HasOne(e => e.TbService)
                .WithMany()
                .HasForeignKey(e => e.TbServiceCode);
            });

            modelBuilder.Entity <TreatmentOutcome>(entity =>
            {
                entity.Property(e => e.TreatmentOutcomeType)
                .HasConversion(treatmentOutcomeTypeEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.Property(e => e.TreatmentOutcomeSubType)
                .HasConversion(treatmentOutcomeSubTypeEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.ToTable(nameof(TreatmentOutcome), ReferenceDataSchemaName);

                entity.HasData(Models.SeedData.TreatmentOutcomes.GetTreatmentOutcomes());
            });

            modelBuilder.Entity <UserLoginEvent>(entity =>
            {
                entity.Property(e => e.Username)
                .IsRequired()
                .HasMaxLength(64);
                entity.Property(e => e.LoginDate)
                .IsRequired();
                entity.Property(e => e.SystemName)
                .IsRequired()
                .HasMaxLength(64);
            });

            modelBuilder.Entity <LegacyImportNotificationOutcome>(entity =>
            {
                entity.Property(e => e.OldNotificationId)
                .HasMaxLength(50)
                .IsRequired();

                entity.HasOne <LegacyImportMigrationRun>()
                .WithMany(e => e.LegacyImportNotificationOutcomes)
                .HasForeignKey(e => e.LegacyImportMigrationRunId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                entity.HasIndex(e => e.LegacyImportMigrationRunId);
            });

            modelBuilder.Entity <LegacyImportNotificationLogMessage>(entity =>
            {
                entity.Property(e => e.OldNotificationId)
                .HasMaxLength(50)
                .IsRequired();

                entity.Property(e => e.LogMessageLevel)
                .HasConversion(logMessageLevelEnumConverter)
                .HasMaxLength(EnumMaxLength);

                entity.HasOne <LegacyImportMigrationRun>()
                .WithMany(e => e.LegacyImportNotificationLogMessages)
                .HasForeignKey(e => e.LegacyImportMigrationRunId)
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                entity.HasIndex(e => e.LegacyImportMigrationRunId);
            });
        }
示例#29
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var godId    = Guid.Parse("67af6f37-55b6-4a84-a87e-d059416e0af6");
            var godRoles = new[]
            {
                new Role {
                    Id = RoleNameExtension.ConsumerRoleId, Name = RoleName.Consumer
                },
                new Role {
                    Id = RoleNameExtension.LocksmithRoleId, Name = RoleName.Locksmith
                },
                new Role {
                    Id = RoleNameExtension.AdminRoleId, Name = RoleName.Admin
                }
            };

            var roleNameConverter         = new EnumToStringConverter <RoleName>();
            var userStatusConverter       = new EnumToStringConverter <UserStatus>();
            var messageTypeConverter      = new EnumToStringConverter <MessageType>();
            var territoryTypeConverter    = new EnumToStringConverter <TerritoryType>();
            var gasEquipmentTypeConverter = new EnumToStringConverter <GasEquipmentType>();

            #region Control

            modelBuilder.Entity <Control>()
            .HasMany(control => control.Users)
            .WithOne(user => user.Control)
            .HasForeignKey(user => user.ControlId);

            modelBuilder.Entity <Control>()
            .HasData(new Control
            {
                Id     = godId,
                Number = 1
            });

            #endregion

            #region User

            modelBuilder.Entity <User>()
            .HasOne(profile => profile.Profile)
            .WithOne()
            .HasForeignKey <User>(user => user.Id)
            .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity <User>()
            .HasMany(user => user.MaintenanceCards)
            .WithOne(maintenanceCard => maintenanceCard.User)
            .HasForeignKey(maintenanceCard => maintenanceCard.UserId);

            modelBuilder.Entity <User>()
            .Property(user => user.Status)
            .HasConversion(userStatusConverter);

            modelBuilder.Entity <User>()
            .HasData(new User
            {
                Id        = godId,
                ControlId = godId,
                ProfileId = godId,
                Email     = "*****@*****.**",
                Password  = "******",
                Status    = UserStatus.Confirmed
            });

            #endregion

            #region Role

            modelBuilder.Entity <Role>()
            .Property(role => role.Name)
            .HasConversion(roleNameConverter);

            modelBuilder.Entity <Role>().HasData(godRoles);

            #endregion

            #region UserRole

            modelBuilder.Entity <UserRole>()
            .HasKey(userRole => new { userRole.UserId, userRole.RoleId });

            modelBuilder.Entity <UserRole>()
            .HasOne(userRole => userRole.User)
            .WithMany(user => user.Roles)
            .HasForeignKey(userRole => userRole.UserId);

            modelBuilder.Entity <UserRole>()
            .HasOne(userRole => userRole.Role)
            .WithMany(role => role.Users)
            .HasForeignKey(userRole => userRole.RoleId);

            modelBuilder.Entity <UserRole>()
            .HasData(godRoles.Select(role => new UserRole {
                UserId = godId, RoleId = role.Id
            }).ToArray());

            #endregion

            #region EmailMessage

            modelBuilder.Entity <EmailMessage>()
            .Property(emailMessage => emailMessage.Type)
            .HasConversion(messageTypeConverter);

            #endregion

            #region Consumer

            modelBuilder.Entity <Consumer>()
            .HasOne(profile => profile.Profile)
            .WithOne()
            .HasForeignKey <Consumer>(consumer => consumer.Id)
            .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity <Consumer>()
            .HasOne(consumer => consumer.Address)
            .WithMany(profile => profile.Consumers);

            modelBuilder.Entity <Consumer>()
            .HasMany(consumer => consumer.MaintenanceCards)
            .WithOne(maintenanceCard => maintenanceCard.Consumer)
            .HasForeignKey(maintenanceCard => maintenanceCard.ConsumerId);

            #endregion

            #region Profile

            modelBuilder.Entity <Profile>()
            .HasData(new Profile
            {
                Id          = godId,
                FirstName   = "Саня",
                LastName    = "Желонкин",
                Patronymic  = "Викторович",
                PhoneNumber = "+7 927 298 32 49"
            });

            #endregion

            #region Address

            modelBuilder.Entity <Address>()
            .HasOne(address => address.Structure)
            .WithMany(structure => structure.Addresses);

            #endregion

            #region Structure

            modelBuilder.Entity <Structure>()
            .HasOne(structure => structure.Street)
            .WithMany(structure => structure.Structures);

            #endregion

            #region Street

            modelBuilder.Entity <Street>()
            .HasOne(street => street.Locality)
            .WithMany(structure => structure.Streets);

            #endregion

            #region Locality

            modelBuilder.Entity <Locality>()
            .HasOne(locality => locality.Territory)
            .WithMany(structure => structure.Localities);

            #endregion

            #region Territory

            modelBuilder.Entity <Territory>()
            .HasOne(territory => territory.Parent)
            .WithMany(territory => territory.Children)
            .HasForeignKey(territory => territory.ParentId);

            modelBuilder.Entity <Territory>()
            .Property(territory => territory.Type)
            .HasConversion(territoryTypeConverter);

            #endregion

            #region GasEquipment

            modelBuilder.Entity <GasEquipment>()
            .HasOne(gasEquipment => gasEquipment.Manufacturer)
            .WithMany(manufacturer => manufacturer.GasEquipments)
            .HasForeignKey(gasEquipment => gasEquipment.ManufacturerId);

            modelBuilder.Entity <GasEquipment>()
            .Property(gasEquipment => gasEquipment.Type)
            .HasConversion(gasEquipmentTypeConverter);

            #endregion

            #region ConsumerGasEquipment

            modelBuilder.Entity <ConsumerGasEquipment>()
            .HasKey(consumerGasEquipment => new { consumerGasEquipment.ConsumerId, consumerGasEquipment.GasEquipmentId });

            modelBuilder.Entity <ConsumerGasEquipment>()
            .HasOne(consumerGasEquipment => consumerGasEquipment.Consumer)
            .WithMany(consumer => consumer.GasEquipments)
            .HasForeignKey(consumerGasEquipment => consumerGasEquipment.ConsumerId);

            modelBuilder.Entity <ConsumerGasEquipment>()
            .HasOne(consumerGasEquipment => consumerGasEquipment.GasEquipment)
            .WithMany()
            .HasForeignKey(consumerGasEquipment => consumerGasEquipment.GasEquipmentId);

            #endregion

            #region MaintenanceCard

            modelBuilder.Entity <MaintenanceCard>()
            .HasMany(maintenanceCard => maintenanceCard.Maintenances)
            .WithOne(maintenance => maintenance.MaintenanceCard)
            .HasForeignKey(maintenance => maintenance.MaintenanceCardId);

            #endregion

            base.OnModelCreating(modelBuilder);
        }
示例#30
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Person>()
            .Property(p => p.Name)
            .IsRequired();

            modelBuilder.Entity <Meeting>()
            .Property(m => m.Date)
            .IsRequired();

            modelBuilder.Entity <Note>()
            .Property(n => n.Notes)
            .IsRequired();

            modelBuilder.Entity <Note>()
            .Property(n => n.Time)
            .HasDefaultValue(DateTime.Now);

            modelBuilder.Entity <Person>()
            .Property(p => p.RowVersion)
            .ValueGeneratedOnAddOrUpdate()
            .IsConcurrencyToken();

            #region Seeding
            modelBuilder.Entity <Person>().HasData(
                new Person
            {
                ID = 1, Name = "Bálint", MartialState = MartialState.Single, SiblingState = SiblingState.Middle
            },
                new Person
            {
                ID = 2, Name = "Zsófia", MartialState = MartialState.Single, SiblingState = SiblingState.Eldest
            }
                );

            modelBuilder.Entity <Meeting>().HasData(
                new Meeting
            {
                ID = 1, Date = new DateTime(2019, 5, 10), Notes = "Zenekar"
            },
                new Meeting
            {
                ID = 2, Date = new DateTime(2019, 5, 9), Notes = "Házi átvétel", Place = "BME L épület"
            }
                );

            modelBuilder.Entity <Note>().HasData(
                new Note {
                ID = 1, PersonID = 1, Notes = "barbarbarbar"
            }
                );

            modelBuilder.Entity <PersonMeeting>().HasData(
                new PersonMeeting {
                ID = 1, PersonID = 1, MeetingID = 1
            },
                new PersonMeeting {
                ID = 2, PersonID = 2, MeetingID = 1
            }
                );
            #endregion

            var martialConverter = new EnumToStringConverter <MartialState>();
            modelBuilder
            .Entity <Person>()
            .Property(e => e.MartialState)
            .HasConversion(martialConverter);
            var siblingConverter = new EnumToStringConverter <SiblingState>();
            modelBuilder
            .Entity <Person>()
            .Property(e => e.SiblingState)
            .HasConversion(siblingConverter);
        }