внешний ключ SQL-скриптов, сгенерированных Visual Studio, отличается - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть два класса сущностей:

public class User 
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [InverseProperty("User")]
    public virtual UserDetail UserDetail { get; set; }
}

public class UserDetail
{
    public string Biography { get; set; }

    [Key]
    public string UserId { get; set; }
    [ForeignKey("UserId")]
    public virtual User User { get; set; }
}

И DbContext:

public class AppDbContext : DbContext
{
    public AppDbContext (DbContextOptions<AppDbContext> options)
        : base(options)
    {
    }

    public DbSet<User> Users { get; set; }
    public DbSet<UserDetail> UserDetails { get; set; }
}

Когда я запускаю команду:

dotnet ef migrations add Initial

Обновление базы данных dotnet ef

Будут созданы две таблицы. Когда я дважды щелкаю «dbo.UserDetails» в «Проводнике объектов SQL Server» Visual Studio, в представлении «Дизайн» отображается внешний ключ:

Foreign Key in Design View

Однако, если щелкнуть правой кнопкой мыши «dbo.UserDetails» и выбрать «Script As» -> «Create To» -> «New Query Window», сгенерированный sql будет:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[UserDetails] (
    [Biography] NVARCHAR (MAX) NULL,
    [UserId]    NVARCHAR (450) NOT NULL
);

Что меня смущает, так это то, что FK CONSTRAINT ушел отсюда.

  • Visual Studio: сообщество 2017, 15.7.5
  • .NET Core SDK: 2.1.302
  • Ядро Entity Framework: 2.1.1-rtm-30846

Любая помощь? Заранее спасибо.

...