Ograniczenia klucza obcegoForeign Key Constraints

Uwaga

Konfiguracja opisana w tej sekcji ma zastosowanie do relacyjnych baz danych w zasadzie.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia pokazane staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionego Microsoft.EntityFrameworkCore.Relational pakietu).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Wprowadzono ograniczenie klucza obcego dla każdej relacji w modelu.A foreign key constraint is introduced for each relationship in the model.

KonwencjeConventions

Według Konwencji o nazwie ograniczeń klucza obcego FK_<dependent type name>_<principal type name>_<foreign key property name>.By convention, foreign key constraints are named FK_<dependent type name>_<principal type name>_<foreign key property name>. Złożonych kluczy obcych <foreign key property name> staje się podkreślenia oddzielone listę nazw właściwości kluczy obcych.For composite foreign keys <foreign key property name> becomes an underscore separated list of foreign key property names.

Adnotacji danychData Annotations

Ograniczenie klucza obcego nazwy nie można skonfigurować za pomocą adnotacji danych.Foreign key constraint names cannot be configured using data annotations.

Interfejsu API FluentFluent API

Aby skonfigurować nazwę ograniczenia klucza obcego relacji, można użyć interfejsu API Fluent.You can use the Fluent API to configure the foreign key constraint name for a relationship.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Post>()
            .HasOne(p => p.Blog)
            .WithMany(b => b.Posts)
            .HasForeignKey(p => p.BlogId)
            .HasConstraintName("ForeignKey_Post_Blog");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}