Почему Entity Framework Core генерирует свойство навигации, если нет внешнего ключа? - PullRequest
2 голосов
/ 22 сентября 2019

У меня есть эта схема таблицы:

CREATE TABLE Categories
(
    Id INT IDENTITY(1,1),
    Name VARCHAR(100),
    CONSTRAINT PK_Category_Id PRIMARY KEY (Id)
)

CREATE TABLE Products
(
    Id INT IDENTITY(1,1),
    IdCategory INT NOT NULL
        CONSTRAINT FK_Products_IdCategory__Categories_Id 
            FOREIGN KEY(IdCategory) REFERENCES Categories(Id),
    Name VARCHAR(100), 
    Price DECIMAL(18,2),
    ImageUrl VARCHAR(256),
    CONSTRAINT PK_Product_Id PRIMARY KEY (Id)
)

Я выполняю следующую команду в консоли диспетчера пакетов:

Scaffold-DbContext "Server=FOO-PC\SQL2014XP;Database=fooDatabase;Trusted_Connection=True;" 
    Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Entity Framework Core генерирует следующееклассы домена:

public partial class Categories
{
    public Categories()
    {
        Products = new HashSet<Products>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Products> Products { get; set; }
}

public partial class Products
{
    public Products()
    {
        OrderItems = new HashSet<OrderItems>();
        ShoppingCartItems = new HashSet<ShoppingCartItems>();
    }

    public int Id { get; set; }
    public int IdCategory { get; set; }
    public string Name { get; set; }
    public decimal? Price { get; set; }
    public string ImageUrl { get; set; }

    public virtual Categories IdCategoryNavigation { get; set; }
    public virtual ICollection<Items> Items { get; set; }        
}

Мой вопрос:

  1. Почему EF Core генерирует public virtual ICollection<Products> Products { get; set; } в классе Categories?
  2. Можно ли предотвратить генерацию этого свойства Products?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...