• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Migracja z niepotrzebnym dodatkowym kluczem obcym

Object Storage Arubacloud
0 głosów
98 wizyt
pytanie zadane 30 kwietnia 2019 w C# przez Franek Kimono Początkujący (340 p.)

Chciałbym mieć tylko jeden klucz obcy UserId ale w migracji automatycznie pojawia się też User_Id, jak się tego pozbyć?

namespace JSW.DataAccess.Entities
{
    public class Subscription : Entity<int>
    {
        public string Name { get; set; }

        public int EmployeeQty { get; set; }

        public DateTime StartDate { get; set; }
        
        public DateTime EndDate { get; set; } 
        
        public virtual User User { get; set; }

        public int? UserId { get; set; }
    }
}
namespace JSW.DataAccess.EntitiesConfigurations
{
    class SubscriptionConfiguration : EntityTypeConfiguration<Subscription>
    {
        public SubscriptionConfiguration()
        {
            ToTable("Subscription");
 
            HasKey(u => u.Id);
 
            HasOptional(x => x.User).WithMany().HasForeignKey(x => x.UserId).WillCascadeOnDelete(); 
           
        }
    }
}

 

namespace JSW.DataAccess.Migrations
{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class dssf : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "dbo.Subscription",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        Name = c.String(),
                        EmployeeQty = c.Int(nullable: false),
                        StartDate = c.DateTime(nullable: false),
                        EndDate = c.DateTime(nullable: false),
                        UserId = c.Int(),
                        User_Id = c.Int(),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.User", t => t.User_Id)
                .ForeignKey("dbo.User", t => t.UserId, cascadeDelete: true)
                .Index(t => t.UserId)
                .Index(t => t.User_Id);
            
            CreateTable(
                "dbo.User",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        Login = c.String(nullable: false, maxLength: 100),
                        Name = c.String(),
                        PasswordHash = c.String(),
                        Email = c.String(),
                        Active = c.Boolean(nullable: false),
                        LastActivityDate = c.DateTime(),
                        PasswordChangeRequired = c.Boolean(nullable: false),
                        LastPasswordChangeDate = c.DateTime(),
                        SessionId = c.String(),
                    })
                .PrimaryKey(t => t.Id);
            
        }
        
        public override void Down()
        {
            DropForeignKey("dbo.Subscription", "UserId", "dbo.User");
            DropForeignKey("dbo.Subscription", "User_Id", "dbo.User");
            DropIndex("dbo.Subscription", new[] { "User_Id" });
            DropIndex("dbo.Subscription", new[] { "UserId" });
            DropTable("dbo.User");
            DropTable("dbo.Subscription");
        }
    }
}

 

2 odpowiedzi

+1 głos
odpowiedź 30 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)
wybrane 30 kwietnia 2019 przez Franek Kimono
 
Najlepsza

Chciałbym mieć tylko jeden klucz obcy UserId

Już go masz, nie musisz go osobno deklarować.

public virtual User User { get; set; }

To Ci daje relację i automatycznie generuje klucz obcy.

komentarz 30 kwietnia 2019 przez Franek Kimono Początkujący (340 p.)
Dzięki za odpowiedź

pozdrawiam
0 głosów
odpowiedź 30 kwietnia 2019 przez Franek Kimono Początkujący (340 p.)

Tworzył się dlatego po w nie miąłem konfiguracji do tabeli User dla:

 public virtual ICollection<Subscription> Subscriptions { get; set; } = new List<Subscription>();

Dodałem konfiguracje:

 HasMany(x => x.Subscriptions).WithOptional(x => x.User).HasForeignKey(x => x.UserId);

I już się nie pojawia User_Id.

Podobne pytania

0 głosów
1 odpowiedź 359 wizyt
0 głosów
2 odpowiedzi 3,329 wizyt
pytanie zadane 4 lutego 2018 w SQL, bazy danych przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
2 odpowiedzi 106 wizyt
pytanie zadane 9 stycznia 2019 w C# przez NoButNo1 Nowicjusz (180 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...