ұйымдық жүйе еркін сөйлесу - конвенцияны атауға негізделген негізгі кілтті жасау

Мен EF Fluent API үйренуге кірісемін.

Менде қарапайым POCO сыныптары бар.

public class Customer
{
    public int CustomerId{ get; set;}
    public string Name{ get; set;}
}

public class Project
{
    public int ProjectId { get; set; }
    public int CustomerId { get; set; }
    public string Name { get; set; }
    public Customer Customer { get; set; }
}

контекстік класс

   public class MyCtx:DbContext
    {
        public DbSet Projects { get; set; }
        public DbSet Authors { get; set; }

        public MyCtx(string  connString):base(connString)
        {}

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //PK
            modelBuilder.Entity()
                .HasKey(p => p.ProjectId)
                .Property(p => p.ProjectId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
                .HasColumnName("PROJECT_ID")
                .IsRequired();


            modelBuilder.Entity()
                .Property(c => c.Name)
                .HasColumnName("NAME")
                .IsRequired();

            //--------------------------------------------------------------------

            //PK
            modelBuilder.Entity()
                .HasKey(c => c.CustomerId)
                .Property(c => c.CustomerId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
                .HasColumnName("CUSTOMER_ID")
                .IsRequired();

            modelBuilder.Entity()
                .Property(c => c.Name)
                .HasColumnName("NAME")
                .IsRequired();

            base.OnModelCreating(modelBuilder);
        }
    }

Мен CustomerId клиенттің клиенттегі басты кілті болатынын және ProjectId жобаның кестесіндегі бастапқы кілт болып табылатынын анықтадым.

Мен осы әрекетке таңданамын. КлиентИд жобасының кестесінде автоматты түрде шетел кілті болады.

Бұл мінез-құлық конвенцияға негізделген? Немесе ол қалай жұмыс істейді?

0

1 жауаптар

Иә, бұл атау конвенциясына негізделеді, бұл жағдайда NavigationPropertyNameForeignKeyDiscoveryConvention :

Шетелдік кілт қасиеттерін анықтауға арналған конвенциялар, олардың атаулары   тәуелді шарлау сипатының атауын ( Клиент ) өзіңізге қосыңыз   негізгі түрдегі негізгі кілт сипатының аты (лары) ( CustomerId ).

Немесе PrimaryKeyNameForeignKeyDiscoveryConvention :

Аттары сәйкес келетін шетел кілтінің сипаттарын табу туралы конвенция   негізгі түрдегі негізгі кілт сипатының аты (лары).

Мен қандай екенімді білмеймін.

Егер сіз осы конвенциялардың біреуін ұнатпасаңыз, сіз оларды модельдің құрастырушысымен бірге алып тастай аласыз:

modelBuilder.Conventions
    .Remove();
// etc.

Барлық конвенциялардың толық тізімі - бұл мұнда .

0
қосылды
Жақсы түсініктеме бергеніңіз үшін рахмет.
қосылды автор user572844, көзі