コード例 #1
0
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);

            modelBuilder.Entity("MemCheck.Domain.Card", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("AdditionalInfo")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <double>("AverageRating")
                .HasColumnType("float");

                b.Property <string>("BackSide")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("CardLanguageId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("FrontSide")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <DateTime>("InitialCreationUtcDate")
                .HasColumnType("datetime2");

                b.Property <Guid?>("PreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <int>("RatingCount")
                .HasColumnType("int");

                b.Property <Guid>("VersionCreatorId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("VersionDescription")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("VersionType")
                .HasColumnType("int");

                b.Property <DateTime>("VersionUtcDate")
                .HasColumnType("datetime2");

                b.HasKey("Id");

                b.HasIndex("CardLanguageId");

                b.HasIndex("PreviousVersionId");

                b.HasIndex("VersionCreatorId");

                b.ToTable("Cards");
            });

            modelBuilder.Entity("MemCheck.Domain.CardInDeck", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("DeckId")
                .HasColumnType("uniqueidentifier");

                b.Property <DateTime>("AddToDeckUtcTime")
                .HasColumnType("datetime2");

                b.Property <int>("BiggestHeapReached")
                .HasColumnType("int");

                b.Property <int>("CurrentHeap")
                .HasColumnType("int");

                b.Property <DateTime>("ExpiryUtcTime")
                .HasColumnType("datetime2");

                b.Property <DateTime>("LastLearnUtcTime")
                .HasColumnType("datetime2");

                b.Property <int>("NbTimesInNotLearnedHeap")
                .HasColumnType("int");

                b.HasKey("CardId", "DeckId");

                b.HasIndex("CurrentHeap");

                b.HasIndex("DeckId", "CurrentHeap", "CardId");

                SqlServerIndexBuilderExtensions.IncludeProperties(b.HasIndex("DeckId", "CurrentHeap", "CardId"), new[] { "AddToDeckUtcTime", "BiggestHeapReached", "LastLearnUtcTime", "NbTimesInNotLearnedHeap" });

                b.HasIndex("DeckId", "CurrentHeap", "ExpiryUtcTime");

                SqlServerIndexBuilderExtensions.IncludeProperties(b.HasIndex("DeckId", "CurrentHeap", "ExpiryUtcTime"), new[] { "AddToDeckUtcTime", "BiggestHeapReached", "CardId", "LastLearnUtcTime", "NbTimesInNotLearnedHeap" });

                b.ToTable("CardsInDecks");
            });

            modelBuilder.Entity("MemCheck.Domain.CardInSearchResult", b =>
            {
                b.Property <Guid>("SearchSubscriptionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("SearchSubscriptionId", "CardId");

                b.ToTable("CardsInSearchResults");
            });

            modelBuilder.Entity("MemCheck.Domain.CardLanguage", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("Name")
                .IsRequired()
                .HasMaxLength(50)
                .HasColumnType("nvarchar(50)");

                b.HasKey("Id");

                b.ToTable("CardLanguages");
            });

            modelBuilder.Entity("MemCheck.Domain.CardNotificationSubscription", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.Property <DateTime>("LastNotificationUtcDate")
                .HasColumnType("datetime2");

                b.Property <int>("RegistrationMethod")
                .HasColumnType("int");

                b.Property <DateTime>("RegistrationUtcDate")
                .HasColumnType("datetime2");

                b.HasKey("CardId", "UserId");

                b.HasIndex("UserId");

                b.ToTable("CardNotifications");
            });

            modelBuilder.Entity("MemCheck.Domain.CardPreviousVersion", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("AdditionalInfo")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <string>("BackSide")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("Card")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("CardLanguageId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("FrontSide")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <Guid?>("PreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("VersionCreatorId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("VersionDescription")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("VersionType")
                .HasColumnType("int");

                b.Property <DateTime>("VersionUtcDate")
                .HasColumnType("datetime2");

                b.HasKey("Id");

                b.HasIndex("CardLanguageId");

                b.HasIndex("PreviousVersionId");

                b.HasIndex("VersionCreatorId");

                b.ToTable("CardPreviousVersions");
            });

            modelBuilder.Entity("MemCheck.Domain.Deck", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("HeapingAlgorithmId")
                .HasColumnType("int");

                b.Property <Guid>("OwnerId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("Id");

                b.HasIndex("OwnerId");

                b.ToTable("Decks");
            });

            modelBuilder.Entity("MemCheck.Domain.ExcludedTagInSearchSubscription", b =>
            {
                b.Property <Guid>("SearchSubscriptionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("TagId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("SearchSubscriptionId", "TagId");

                b.ToTable("ExcludedTagInSearchSubscriptions");
            });

            modelBuilder.Entity("MemCheck.Domain.Image", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <byte[]>("BigBlob")
                .IsRequired()
                .HasColumnType("varbinary(max)");

                b.Property <int>("BigBlobSize")
                .HasColumnType("int");

                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <DateTime>("InitialUploadUtcDate")
                .HasColumnType("datetime2");

                b.Property <DateTime>("LastChangeUtcDate")
                .HasColumnType("datetime2");

                b.Property <byte[]>("MediumBlob")
                .IsRequired()
                .HasColumnType("varbinary(max)");

                b.Property <int>("MediumBlobSize")
                .HasColumnType("int");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("nvarchar(450)");

                b.Property <byte[]>("OriginalBlob")
                .IsRequired()
                .HasColumnType("varbinary(max)");

                b.Property <string>("OriginalContentType")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("OriginalSize")
                .HasColumnType("int");

                b.Property <Guid>("OwnerId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid?>("PreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <byte[]>("SmallBlob")
                .IsRequired()
                .HasColumnType("varbinary(max)");

                b.Property <int>("SmallBlobSize")
                .HasColumnType("int");

                b.Property <string>("Source")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <string>("VersionDescription")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("VersionType")
                .HasColumnType("int");

                b.HasKey("Id");

                b.HasIndex("Name")
                .IsUnique();

                b.HasIndex("OwnerId");

                b.HasIndex("PreviousVersionId");

                b.ToTable("Images");
            });

            modelBuilder.Entity("MemCheck.Domain.ImageInCard", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("ImageId")
                .HasColumnType("uniqueidentifier");

                b.Property <int>("CardSide")
                .HasColumnType("int");

                b.HasKey("CardId", "ImageId");

                b.HasIndex("ImageId");

                b.ToTable("ImagesInCards");
            });

            modelBuilder.Entity("MemCheck.Domain.ImageInCardPreviousVersion", b =>
            {
                b.Property <Guid>("ImageId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("CardPreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <int>("CardSide")
                .HasColumnType("int");

                b.HasKey("ImageId", "CardPreviousVersionId");

                b.HasIndex("CardPreviousVersionId");

                b.ToTable("ImagesInCardPreviousVersions");
            });

            modelBuilder.Entity("MemCheck.Domain.ImagePreviousVersion", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("Image")
                .HasColumnType("uniqueidentifier");

                b.Property <DateTime>("InitialUploadUtcDate")
                .HasColumnType("datetime2");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <byte[]>("OriginalBlob")
                .IsRequired()
                .HasColumnType("varbinary(max)");

                b.Property <string>("OriginalContentType")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("OriginalSize")
                .HasColumnType("int");

                b.Property <Guid>("OwnerId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid?>("PreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("Source")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <string>("VersionDescription")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <int>("VersionType")
                .HasColumnType("int");

                b.Property <DateTime>("VersionUtcDate")
                .HasColumnType("datetime2");

                b.HasKey("Id");

                b.HasIndex("OwnerId");

                b.HasIndex("PreviousVersionId");

                b.ToTable("ImagePreviousVersions");
            });

            modelBuilder.Entity("MemCheck.Domain.MemCheckUser", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <int>("AccessFailedCount")
                .HasColumnType("int");

                b.Property <string>("ConcurrencyStamp")
                .IsConcurrencyToken()
                .HasColumnType("nvarchar(max)");

                b.Property <DateTime?>("DeletionDate")
                .HasColumnType("datetime2");

                b.Property <string>("Email")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.Property <bool>("EmailConfirmed")
                .HasColumnType("bit");

                b.Property <DateTime>("LastNotificationUtcDate")
                .HasColumnType("datetime2");

                b.Property <bool>("LockoutEnabled")
                .HasColumnType("bit");

                b.Property <DateTimeOffset?>("LockoutEnd")
                .HasColumnType("datetimeoffset");

                b.Property <int>("MinimumCountOfDaysBetweenNotifs")
                .HasColumnType("int");

                b.Property <string>("NormalizedEmail")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.Property <string>("NormalizedUserName")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.Property <string>("PasswordHash")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("PhoneNumber")
                .HasColumnType("nvarchar(max)");

                b.Property <bool>("PhoneNumberConfirmed")
                .HasColumnType("bit");

                b.Property <Guid?>("PreferredCardCreationLanguageId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("SecurityStamp")
                .HasColumnType("nvarchar(max)");

                b.Property <bool>("SubscribeToCardOnEdit")
                .HasColumnType("bit");

                b.Property <bool>("TwoFactorEnabled")
                .HasColumnType("bit");

                b.Property <string>("UILanguage")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("UserName")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.HasKey("Id");

                b.HasIndex("NormalizedEmail")
                .HasDatabaseName("EmailIndex");

                b.HasIndex("NormalizedUserName")
                .IsUnique()
                .HasDatabaseName("UserNameIndex")
                .HasFilter("[NormalizedUserName] IS NOT NULL");

                b.HasIndex("PreferredCardCreationLanguageId");

                b.ToTable("AspNetUsers", (string)null);
            });

            modelBuilder.Entity("MemCheck.Domain.MemCheckUserRole", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("ConcurrencyStamp")
                .IsConcurrencyToken()
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Name")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.Property <string>("NormalizedName")
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.HasKey("Id");

                b.HasIndex("NormalizedName")
                .IsUnique()
                .HasDatabaseName("RoleNameIndex")
                .HasFilter("[NormalizedName] IS NOT NULL");

                b.ToTable("AspNetRoles", (string)null);
            });

            modelBuilder.Entity("MemCheck.Domain.RequiredTagInSearchSubscription", b =>
            {
                b.Property <Guid>("SearchSubscriptionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("TagId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("SearchSubscriptionId", "TagId");

                b.ToTable("RequiredTagInSearchSubscriptions");
            });

            modelBuilder.Entity("MemCheck.Domain.SearchSubscription", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <bool>("ExcludeAllTags")
                .HasColumnType("bit");

                b.Property <Guid>("ExcludedDeck")
                .HasColumnType("uniqueidentifier");

                b.Property <DateTime>("LastRunUtcDate")
                .HasColumnType("datetime2");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <DateTime>("RegistrationUtcDate")
                .HasColumnType("datetime2");

                b.Property <string>("RequiredText")
                .IsRequired()
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("Id");

                b.ToTable("SearchSubscriptions");
            });

            modelBuilder.Entity("MemCheck.Domain.Tag", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uniqueidentifier");

                b.Property <string>("Description")
                .IsRequired()
                .HasMaxLength(5000)
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Name")
                .IsRequired()
                .HasMaxLength(50)
                .HasColumnType("nvarchar(50)");

                b.HasKey("Id");

                b.ToTable("Tags");
            });

            modelBuilder.Entity("MemCheck.Domain.TagInCard", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("TagId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("CardId", "TagId");

                b.HasIndex("TagId");

                b.ToTable("TagsInCards");
            });

            modelBuilder.Entity("MemCheck.Domain.TagInPreviousCardVersion", b =>
            {
                b.Property <Guid>("CardPreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("TagId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("CardPreviousVersionId", "TagId");

                b.HasIndex("TagId");

                b.ToTable("TagInPreviousCardVersions");
            });

            modelBuilder.Entity("MemCheck.Domain.UserCardRating", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.Property <int>("Rating")
                .HasColumnType("int");

                b.HasKey("CardId", "UserId");

                b.HasIndex("UserId");

                SqlServerIndexBuilderExtensions.IncludeProperties(b.HasIndex("UserId"), new[] { "Rating" });

                b.ToTable("UserCardRatings");
            });

            modelBuilder.Entity("MemCheck.Domain.UserWithViewOnCard", b =>
            {
                b.Property <Guid>("CardId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("CardId", "UserId");

                b.HasIndex("UserId");

                b.ToTable("UsersWithViewOnCards");
            });

            modelBuilder.Entity("MemCheck.Domain.UserWithViewOnCardPreviousVersion", b =>
            {
                b.Property <Guid>("CardPreviousVersionId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("AllowedUserId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("CardPreviousVersionId", "AllowedUserId");

                b.HasIndex("AllowedUserId");

                b.ToTable("UsersWithViewOnCardPreviousVersions");
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<System.Guid>", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <string>("ClaimType")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("ClaimValue")
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("RoleId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("Id");

                b.HasIndex("RoleId");

                b.ToTable("AspNetRoleClaims", (string)null);
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<System.Guid>", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <string>("ClaimType")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("ClaimValue")
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("Id");

                b.HasIndex("UserId");

                b.ToTable("AspNetUserClaims", (string)null);
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<System.Guid>", b =>
            {
                b.Property <string>("LoginProvider")
                .HasColumnType("nvarchar(450)");

                b.Property <string>("ProviderKey")
                .HasColumnType("nvarchar(450)");

                b.Property <string>("ProviderDisplayName")
                .HasColumnType("nvarchar(max)");

                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("LoginProvider", "ProviderKey");

                b.HasIndex("UserId");

                b.ToTable("AspNetUserLogins", (string)null);
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<System.Guid>", b =>
            {
                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.Property <Guid>("RoleId")
                .HasColumnType("uniqueidentifier");

                b.HasKey("UserId", "RoleId");

                b.HasIndex("RoleId");

                b.ToTable("AspNetUserRoles", (string)null);
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<System.Guid>", b =>
            {
                b.Property <Guid>("UserId")
                .HasColumnType("uniqueidentifier");

                b.Property <string>("LoginProvider")
                .HasColumnType("nvarchar(450)");

                b.Property <string>("Name")
                .HasColumnType("nvarchar(450)");

                b.Property <string>("Value")
                .HasColumnType("nvarchar(max)");

                b.HasKey("UserId", "LoginProvider", "Name");

                b.ToTable("AspNetUserTokens", (string)null);
            });

            modelBuilder.Entity("MemCheck.Domain.Card", b =>
            {
                b.HasOne("MemCheck.Domain.CardLanguage", "CardLanguage")
                .WithMany()
                .HasForeignKey("CardLanguageId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.CardPreviousVersion", "PreviousVersion")
                .WithMany()
                .HasForeignKey("PreviousVersionId");

                b.HasOne("MemCheck.Domain.MemCheckUser", "VersionCreator")
                .WithMany()
                .HasForeignKey("VersionCreatorId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("CardLanguage");

                b.Navigation("PreviousVersion");

                b.Navigation("VersionCreator");
            });

            modelBuilder.Entity("MemCheck.Domain.CardInDeck", b =>
            {
                b.HasOne("MemCheck.Domain.Card", "Card")
                .WithMany("CardInDecks")
                .HasForeignKey("CardId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.HasOne("MemCheck.Domain.Deck", "Deck")
                .WithMany("CardInDecks")
                .HasForeignKey("DeckId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Card");

                b.Navigation("Deck");
            });

            modelBuilder.Entity("MemCheck.Domain.CardInSearchResult", b =>
            {
                b.HasOne("MemCheck.Domain.SearchSubscription", null)
                .WithMany("CardsInLastRun")
                .HasForeignKey("SearchSubscriptionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("MemCheck.Domain.CardNotificationSubscription", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", "User")
                .WithMany()
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("User");
            });

            modelBuilder.Entity("MemCheck.Domain.CardPreviousVersion", b =>
            {
                b.HasOne("MemCheck.Domain.CardLanguage", "CardLanguage")
                .WithMany()
                .HasForeignKey("CardLanguageId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.CardPreviousVersion", "PreviousVersion")
                .WithMany()
                .HasForeignKey("PreviousVersionId");

                b.HasOne("MemCheck.Domain.MemCheckUser", "VersionCreator")
                .WithMany()
                .HasForeignKey("VersionCreatorId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("CardLanguage");

                b.Navigation("PreviousVersion");

                b.Navigation("VersionCreator");
            });

            modelBuilder.Entity("MemCheck.Domain.Deck", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", "Owner")
                .WithMany()
                .HasForeignKey("OwnerId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Owner");
            });

            modelBuilder.Entity("MemCheck.Domain.ExcludedTagInSearchSubscription", b =>
            {
                b.HasOne("MemCheck.Domain.SearchSubscription", null)
                .WithMany("ExcludedTags")
                .HasForeignKey("SearchSubscriptionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("MemCheck.Domain.Image", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", "Owner")
                .WithMany()
                .HasForeignKey("OwnerId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.ImagePreviousVersion", "PreviousVersion")
                .WithMany()
                .HasForeignKey("PreviousVersionId");

                b.Navigation("Owner");

                b.Navigation("PreviousVersion");
            });

            modelBuilder.Entity("MemCheck.Domain.ImageInCard", b =>
            {
                b.HasOne("MemCheck.Domain.Card", "Card")
                .WithMany("Images")
                .HasForeignKey("CardId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.Image", "Image")
                .WithMany("Cards")
                .HasForeignKey("ImageId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.Navigation("Card");

                b.Navigation("Image");
            });

            modelBuilder.Entity("MemCheck.Domain.ImageInCardPreviousVersion", b =>
            {
                b.HasOne("MemCheck.Domain.CardPreviousVersion", "CardPreviousVersion")
                .WithMany("Images")
                .HasForeignKey("CardPreviousVersionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.Image", "Image")
                .WithMany("CardPreviousVersions")
                .HasForeignKey("ImageId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.Navigation("CardPreviousVersion");

                b.Navigation("Image");
            });

            modelBuilder.Entity("MemCheck.Domain.ImagePreviousVersion", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", "Owner")
                .WithMany()
                .HasForeignKey("OwnerId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.ImagePreviousVersion", "PreviousVersion")
                .WithMany()
                .HasForeignKey("PreviousVersionId");

                b.Navigation("Owner");

                b.Navigation("PreviousVersion");
            });

            modelBuilder.Entity("MemCheck.Domain.MemCheckUser", b =>
            {
                b.HasOne("MemCheck.Domain.CardLanguage", "PreferredCardCreationLanguage")
                .WithMany()
                .HasForeignKey("PreferredCardCreationLanguageId");

                b.Navigation("PreferredCardCreationLanguage");
            });

            modelBuilder.Entity("MemCheck.Domain.RequiredTagInSearchSubscription", b =>
            {
                b.HasOne("MemCheck.Domain.SearchSubscription", null)
                .WithMany("RequiredTags")
                .HasForeignKey("SearchSubscriptionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("MemCheck.Domain.TagInCard", b =>
            {
                b.HasOne("MemCheck.Domain.Card", "Card")
                .WithMany("TagsInCards")
                .HasForeignKey("CardId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.Tag", "Tag")
                .WithMany("TagsInCards")
                .HasForeignKey("TagId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Card");

                b.Navigation("Tag");
            });

            modelBuilder.Entity("MemCheck.Domain.TagInPreviousCardVersion", b =>
            {
                b.HasOne("MemCheck.Domain.CardPreviousVersion", "CardPreviousVersion")
                .WithMany("Tags")
                .HasForeignKey("CardPreviousVersionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.Tag", "Tag")
                .WithMany()
                .HasForeignKey("TagId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("CardPreviousVersion");

                b.Navigation("Tag");
            });

            modelBuilder.Entity("MemCheck.Domain.UserCardRating", b =>
            {
                b.HasOne("MemCheck.Domain.Card", "Card")
                .WithMany("UserCardRating")
                .HasForeignKey("CardId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.HasOne("MemCheck.Domain.MemCheckUser", "User")
                .WithMany("UserCardRating")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.Navigation("Card");

                b.Navigation("User");
            });

            modelBuilder.Entity("MemCheck.Domain.UserWithViewOnCard", b =>
            {
                b.HasOne("MemCheck.Domain.Card", "Card")
                .WithMany("UsersWithView")
                .HasForeignKey("CardId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.MemCheckUser", "User")
                .WithMany("UsersWithView")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.Navigation("Card");

                b.Navigation("User");
            });

            modelBuilder.Entity("MemCheck.Domain.UserWithViewOnCardPreviousVersion", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", "AllowedUser")
                .WithMany("UsersWithViewOnPreviousVersion")
                .HasForeignKey("AllowedUserId")
                .OnDelete(DeleteBehavior.NoAction)
                .IsRequired();

                b.HasOne("MemCheck.Domain.CardPreviousVersion", "CardPreviousVersion")
                .WithMany("UsersWithView")
                .HasForeignKey("CardPreviousVersionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("AllowedUser");

                b.Navigation("CardPreviousVersion");
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<System.Guid>", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUserRole", null)
                .WithMany()
                .HasForeignKey("RoleId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<System.Guid>", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", null)
                .WithMany()
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<System.Guid>", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", null)
                .WithMany()
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<System.Guid>", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUserRole", null)
                .WithMany()
                .HasForeignKey("RoleId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("MemCheck.Domain.MemCheckUser", null)
                .WithMany()
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<System.Guid>", b =>
            {
                b.HasOne("MemCheck.Domain.MemCheckUser", null)
                .WithMany()
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("MemCheck.Domain.Card", b =>
            {
                b.Navigation("CardInDecks");

                b.Navigation("Images");

                b.Navigation("TagsInCards");

                b.Navigation("UserCardRating");

                b.Navigation("UsersWithView");
            });

            modelBuilder.Entity("MemCheck.Domain.CardPreviousVersion", b =>
            {
                b.Navigation("Images");

                b.Navigation("Tags");

                b.Navigation("UsersWithView");
            });

            modelBuilder.Entity("MemCheck.Domain.Deck", b =>
            {
                b.Navigation("CardInDecks");
            });

            modelBuilder.Entity("MemCheck.Domain.Image", b =>
            {
                b.Navigation("CardPreviousVersions");

                b.Navigation("Cards");
            });

            modelBuilder.Entity("MemCheck.Domain.MemCheckUser", b =>
            {
                b.Navigation("UserCardRating");

                b.Navigation("UsersWithView");

                b.Navigation("UsersWithViewOnPreviousVersion");
            });

            modelBuilder.Entity("MemCheck.Domain.SearchSubscription", b =>
            {
                b.Navigation("CardsInLastRun");

                b.Navigation("ExcludedTags");

                b.Navigation("RequiredTags");
            });

            modelBuilder.Entity("MemCheck.Domain.Tag", b =>
            {
                b.Navigation("TagsInCards");
            });
#pragma warning restore 612, 618
        }
コード例 #2
0
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);

            modelBuilder.HasSequence <int>("PollId")
            .StartsAt(10000000L);

            modelBuilder.Entity("RaidBattlesBot.Model.Friendship", b =>
            {
                b.Property <long>("Id")
                .HasColumnType("bigint");

                b.Property <long>("FriendId")
                .HasColumnType("bigint");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <int?>("PollId")
                .HasColumnType("int");

                b.Property <int>("Type")
                .HasColumnType("int");

                b.HasKey("Id", "FriendId");

                b.HasIndex("PollId");

                b.ToTable("Friendship", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Notification", b =>
            {
                b.Property <int>("PollId")
                .HasColumnType("int");

                b.Property <long>("ChatId")
                .HasColumnType("bigint");

                b.Property <byte>("Type")
                .HasColumnType("tinyint");

                b.Property <long?>("BotId")
                .HasColumnType("bigint");

                b.Property <DateTimeOffset?>("DateTime")
                .HasColumnType("datetimeoffset");

                b.Property <long?>("MessageId")
                .HasColumnType("bigint");

                b.HasKey("PollId", "ChatId", "Type");

                b.ToTable("Notifications", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Player", b =>
            {
                b.Property <long>("UserId")
                .HasColumnType("bigint");

                b.Property <bool?>("AutoApproveFriendship")
                .HasColumnType("bit");

                b.Property <long?>("FriendCode")
                .HasColumnType("bigint");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <string>("Nickname")
                .HasColumnType("nvarchar(max)");

                b.HasKey("UserId");

                b.ToTable("Players", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Poll", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int")
                .HasDefaultValueSql("NEXT VALUE FOR PollId");

                b.Property <int?>("AllowedVotes")
                .HasColumnType("int");

                b.Property <bool>("Cancelled")
                .HasColumnType("bit");

                b.Property <bool>("ExRaidGym")
                .HasColumnType("bit");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <long?>("Owner")
                .HasColumnType("bigint");

                b.Property <string>("PortalId")
                .HasColumnType("nvarchar(450)");

                b.Property <int?>("RaidId")
                .HasColumnType("int");

                b.Property <DateTimeOffset?>("Time")
                .HasColumnType("datetimeoffset");

                b.Property <string>("TimeZoneId")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Title")
                .HasColumnType("nvarchar(max)");

                b.HasKey("Id");

                b.HasIndex("Id")
                .IsUnique();

                b.HasIndex("PortalId");

                b.HasIndex("RaidId");

                b.HasIndex("Time");

                b.ToTable("Polls", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.PollMessage", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <long?>("BotId")
                .HasColumnType("bigint");

                b.Property <long?>("ChatId")
                .HasColumnType("bigint");

                b.Property <int?>("ChatType")
                .HasColumnType("int");

                b.Property <string>("InlineMessageId")
                .HasColumnType("nvarchar(max)");

                b.Property <int?>("MessageId")
                .HasColumnType("int");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <int>("PollId")
                .HasColumnType("int");

                b.Property <byte?>("PollMode")
                .HasColumnType("tinyint");

                b.Property <long?>("UserId")
                .HasColumnType("bigint");

                b.HasKey("Id");

                b.HasIndex("PollId");

                b.HasIndex("ChatId", "MessageId");

                b.ToTable("Messages", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Portal", b =>
            {
                b.Property <string>("Guid")
                .HasColumnType("nvarchar(450)");

                b.Property <string>("Address")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Image")
                .HasColumnType("nvarchar(max)");

                b.Property <decimal>("Latitude")
                .HasColumnType("decimal(18,15)");

                b.Property <decimal>("Longitude")
                .HasColumnType("decimal(18,15)");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <string>("Name")
                .HasColumnType("nvarchar(max)");

                b.HasKey("Guid");

                b.ToTable("Portals", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Raid", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <string>("Description")
                .HasColumnType("nvarchar(max)");

                b.Property <int?>("EggRaidId")
                .HasColumnType("int");

                b.Property <DateTimeOffset?>("EndTime")
                .HasColumnType("datetimeoffset");

                b.Property <string>("Gym")
                .HasColumnType("nvarchar(max)");

                b.Property <decimal?>("Lat")
                .HasColumnType("decimal(18,15)");

                b.Property <decimal?>("Lon")
                .HasColumnType("decimal(18,15)");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <string>("Move1")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Move2")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Name")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("NearByAddress")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("NearByPlaceId")
                .HasColumnType("nvarchar(max)");

                b.Property <int?>("Pokemon")
                .HasColumnType("int");

                b.Property <string>("PossibleGym")
                .HasColumnType("nvarchar(max)");

                b.Property <int?>("RaidBossLevel")
                .HasColumnType("int");

                b.Property <DateTimeOffset?>("StartTime")
                .HasColumnType("datetimeoffset");

                b.Property <string>("Title")
                .HasColumnType("nvarchar(max)");

                b.HasKey("Id");

                b.HasIndex("EggRaidId")
                .IsUnique()
                .HasFilter("[EggRaidId] IS NOT NULL");

                b.ToTable("Raids", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.ReplyNotification", b =>
            {
                b.Property <long>("ChatId")
                .HasColumnType("bigint");

                b.Property <long>("FromChatId")
                .HasColumnType("bigint");

                b.Property <int>("FromMessageId")
                .HasColumnType("int");

                b.Property <long?>("BotId")
                .HasColumnType("bigint");

                b.Property <long?>("FromUserId")
                .HasColumnType("bigint");

                b.Property <int?>("MessageId")
                .HasColumnType("int");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <int?>("PollId")
                .HasColumnType("int");

                b.HasKey("ChatId", "FromChatId", "FromMessageId");

                b.HasIndex("MessageId");

                b.HasIndex("PollId");

                b.ToTable("ReplyNotifications", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Settings", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <long>("Chat")
                .HasColumnType("bigint");

                b.Property <int>("Format")
                .ValueGeneratedOnAdd()
                .HasColumnType("int")
                .HasDefaultValue(71108369);

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <int>("Order")
                .HasColumnType("int");

                b.HasKey("Id");

                b.HasIndex("Chat");

                SqlServerIndexBuilderExtensions.IncludeProperties(b.HasIndex("Chat"), new[] { "Format" });

                b.ToTable("Settings", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.TimeZoneSettings", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <long>("ChatId")
                .HasColumnType("bigint");

                b.Property <string>("TimeZone")
                .HasColumnType("nvarchar(max)");

                b.HasKey("Id");

                b.HasIndex("ChatId");

                b.ToTable("TimeZoneSettings", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.UserSettings", b =>
            {
                b.Property <long>("UserId")
                .HasColumnType("bigint");

                b.Property <decimal?>("Lat")
                .HasColumnType("decimal(18,15)");

                b.Property <decimal?>("Lon")
                .HasColumnType("decimal(18,15)");

                b.Property <string>("TimeZoneId")
                .HasMaxLength(32)
                .HasColumnType("nvarchar(32)");

                b.HasKey("UserId");

                b.ToTable("UserSettings", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Vote", b =>
            {
                b.Property <int>("PollId")
                .HasColumnType("int");

                b.Property <long>("UserId")
                .HasColumnType("bigint");

                b.Property <long?>("BotId")
                .HasColumnType("bigint");

                b.Property <string>("FirstName")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("LastName")
                .HasColumnType("nvarchar(max)");

                b.Property <DateTimeOffset?>("Modified")
                .HasColumnType("datetimeoffset");

                b.Property <int?>("Team")
                .HasColumnType("int");

                b.Property <string>("Username")
                .HasColumnType("nvarchar(max)");

                b.HasKey("PollId", "UserId");

                b.HasIndex("PollId");

                b.HasIndex("UserId");

                b.ToTable("Votes", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.VoteLimit", b =>
            {
                b.Property <int>("PollId")
                .HasColumnType("int");

                b.Property <int>("Vote")
                .HasColumnType("int");

                b.Property <int>("Limit")
                .HasColumnType("int");

                b.HasKey("PollId", "Vote");

                b.ToTable("VoteLimits", (string)null);
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Notification", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Poll", "Poll")
                .WithMany("Notifications")
                .HasForeignKey("PollId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Poll");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Poll", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Portal", "Portal")
                .WithMany()
                .HasForeignKey("PortalId");

                b.HasOne("RaidBattlesBot.Model.Raid", "Raid")
                .WithMany("Polls")
                .HasForeignKey("RaidId");

                b.Navigation("Portal");

                b.Navigation("Raid");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.PollMessage", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Poll", "Poll")
                .WithMany("Messages")
                .HasForeignKey("PollId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Poll");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Raid", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Raid", "EggRaid")
                .WithOne("PostEggRaid")
                .HasForeignKey("RaidBattlesBot.Model.Raid", "EggRaidId");

                b.Navigation("EggRaid");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.ReplyNotification", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Poll", "Poll")
                .WithMany()
                .HasForeignKey("PollId");

                b.Navigation("Poll");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Vote", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Poll", null)
                .WithMany("Votes")
                .HasForeignKey("PollId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("RaidBattlesBot.Model.VoteLimit", b =>
            {
                b.HasOne("RaidBattlesBot.Model.Poll", null)
                .WithMany("Limits")
                .HasForeignKey("PollId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Poll", b =>
            {
                b.Navigation("Limits");

                b.Navigation("Messages");

                b.Navigation("Notifications");

                b.Navigation("Votes");
            });

            modelBuilder.Entity("RaidBattlesBot.Model.Raid", b =>
            {
                b.Navigation("Polls");

                b.Navigation("PostEggRaid");
            });
#pragma warning restore 612, 618
        }
コード例 #3
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <Raid>(raidEntity =>
            {
                raidEntity.ToTable("Raids");
                raidEntity.HasKey(raid => raid.Id);
                raidEntity.HasOne(raid => raid.EggRaid).WithOne(raid => raid.PostEggRaid).HasForeignKey <Raid>(raid => raid.EggRaidId);
                raidEntity.Property(p => p.Lat).HasColumnType("decimal(18,15)");
                raidEntity.Property(p => p.Lon).HasColumnType("decimal(18,15)");
            });

            modelBuilder.Entity <Poll>(pollEntity =>
            {
                var pollIdSequence = modelBuilder.HasSequence <int>("PollId").StartsAt(10_000_000).IncrementsBy(1);

                pollEntity.ToTable("Polls");
                pollEntity.Property(poll => poll.Id).HasDefaultValueSql($"NEXT VALUE FOR {pollIdSequence.Metadata.Name}");
                pollEntity.HasIndex(poll => poll.Id).IsUnique();
                pollEntity.HasIndex(poll => poll.Time);
                pollEntity.HasMany(poll => poll.Messages).WithOne(message => message.Poll).HasForeignKey(message => message.PollId);
                pollEntity.HasMany(poll => poll.Votes).WithOne().HasForeignKey(vote => vote.PollId);
                pollEntity.HasOne(poll => poll.Raid).WithMany(raid => raid.Polls).HasForeignKey(poll => poll.RaidId);
                pollEntity.HasOne(poll => poll.Portal).WithMany().HasForeignKey(poll => poll.PortalId);
            });

            modelBuilder.Entity <PollMessage>(messageEntity =>
            {
                messageEntity.ToTable("Messages");
                messageEntity.HasKey(message => message.Id);
                messageEntity.Ignore(message => message.Chat);
                messageEntity.HasIndex(message => new { message.ChatId, MesssageId = message.MessageId });
            });

            modelBuilder.Entity <Vote>(voteEntity =>
            {
                voteEntity.ToTable("Votes");
                voteEntity.HasKey(vote => new { vote.PollId, User = vote.UserId });
                voteEntity.Ignore(vote => vote.User);
                voteEntity.HasIndex(vote => vote.PollId);
                voteEntity.HasIndex(vote => vote.UserId);
            });

            modelBuilder.Entity <Settings>(settingsEntity =>
            {
                settingsEntity.ToTable("Settings");
                settingsEntity.HasKey(settings => settings.Id);
                SqlServerIndexBuilderExtensions.IncludeProperties(settingsEntity.HasIndex(settings => settings.Chat), nameof(Settings.Format));
                settingsEntity.Property(settings => settings.Format).HasDefaultValue(VoteEnum.Standard);
            });

            modelBuilder.Entity <Portal>(builder =>
            {
                builder.ToTable("Portals");
                builder.HasKey(portal => portal.Guid);
                builder.Property(portal => portal.Latitude).HasColumnType("decimal(18,15)");
                builder.Property(portal => portal.Longitude).HasColumnType("decimal(18,15)");
            });

            modelBuilder.Entity <Player>(builder =>
            {
                builder.ToTable("Players");
                builder.HasKey(player => player.UserId);
                builder.Property(player => player.UserId).ValueGeneratedNever();
            });

            modelBuilder.Entity <Notification>(builder =>
            {
                builder.ToTable("Notifications");
                builder.HasKey(notification => new { notification.PollId, notification.ChatId, notification.Type });
                builder.HasOne(notification => notification.Poll)
                .WithMany(poll => poll.Notifications)
                .HasForeignKey(notification => notification.PollId);
            });

            modelBuilder.Entity <ReplyNotification>(builder =>
            {
                builder.ToTable("ReplyNotifications");
                builder.HasKey(notification => new { notification.ChatId, notification.FromChatId, notification.FromMessageId });
                builder.HasIndex(notification => notification.MessageId);
                builder.HasOne(notification => notification.Poll)
                .WithMany()
                .HasForeignKey(notification => notification.PollId);
            });

            modelBuilder.Entity <UserSettings>(builder =>
            {
                builder.ToTable("UserSettings");
                builder.HasKey(settings => settings.UserId);
                builder.Property(settings => settings.UserId).ValueGeneratedNever();
                builder.Property(settings => settings.TimeZoneId).HasMaxLength(32);
                builder.Property(p => p.Lat).HasColumnType("decimal(18,15)");
                builder.Property(p => p.Lon).HasColumnType("decimal(18,15)");
            });

            modelBuilder.Entity <Friendship>(builder =>
            {
                builder.ToTable("Friendship");
                builder.HasKey(friendship => new { friendship.Id, friendship.FriendId });
                builder.HasIndex(friendship => friendship.PollId);
            });

            modelBuilder.Entity <TimeZoneSettings>(builder =>
            {
                builder.ToTable(nameof(TimeZoneSettings));
                builder.HasKey(settings => settings.Id);
                builder.HasIndex(settings => settings.ChatId);
            });

            modelBuilder.Entity <VoteLimit>(builder =>
            {
                builder.ToTable("VoteLimits");
                builder.HasKey(vl => new { vl.PollId, vl.Vote });
                builder
                .HasOne <Poll>()
                .WithMany(poll => poll.Limits)
                .HasForeignKey(limit => limit.PollId);
            });
        }