У меня есть два класса сущностей:
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, в представлении «Дизайн» отображается внешний ключ:
Однако, если щелкнуть правой кнопкой мыши «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
Любая помощь? Заранее спасибо.