В настоящее время я работаю над проектом. NET core 3.1.2, в котором у меня есть различные классы с отношениями внешнего ключа. База данных разработана с использованием принципа Code First.
Для определения ограничений внешнего ключа я хочу использовать атрибут ForeignKey из System.ComponentModel.DataAnnotations.Schema.
Вот пример 3 классов Я использую:
public class Facility
{
public Facility()
{
this.Id = Guid.NewGuid();
}
public Guid Id { get; set; }
public string Location { get; set; }
public FacilityType FacilityType { get; set; }
}
public class Product
{
public Product()
{
this.Id = Guid.NewGuid();
}
public Guid Id { get; set; }
public string ProductDescription { get; set; }
public double UnitPrice { get; set; }
public double? UnitWeight { get; set; }
public char VarianceClass { get; set; }
public char MarginClass { get; set; }
}
public class Sale
{
public Sale()
{
this.Id = Guid.NewGuid();
}
public Guid Id { get; set; }
public DateTime Date { get; set; }
[ForeignKey(nameof(Product))]
public Guid ProductID { get; set; }
[ForeignKey(nameof(Facility))]
public int Quantity { get; set; }
}
Как видите, у третьего класса Sale есть два ограничения ForeignKey. После этого я создаю миграции и применяю их, что работает без ошибок:
dotnet ef migrations add InitialCreate
dotnet ef database update
Build started...
Build succeeded.
Done.
Однако в результирующих файлах миграции вообще не создаются ограничения внешнего ключа. Почему-то мои атрибуты ForeignKey игнорируются. В чем может быть причина этого, нужно ли мне настроить что-то еще, чтобы включить ограничения внешнего ключа при создании миграции?