В первом примере вы не добавляете связь, а просто целочисленное свойство с именем CategoryId.Во втором примере Entity Framework создаст целочисленный столбец с именем «Category_ID», но вы не сможете увидеть это свойство в своей модели, поэтому я хотел бы явно добавить его самостоятельно и иметь возможность использовать его вместе ссвойство навигации.
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
[ForeignKey("Category")]
public int CategoryId { get; set; }
public Category Category{get;set;}
}
Таким образом, вы также можете управлять типом данных CategoryId, чтобы вы могли сделать его необязательным (обнуляемым)
public int? CategoryId { get; set; }
* Примечание к данным внешнего ключа не являетсянеобходимо, если только у вас нет имен свойств или свойств навигации, которые не соответствуют соглашению об именах для имен свойств внешнего ключа (спасибо Bardr)
Это означает, что вы создаете отношение 1 ко многим (1- *) стовары и категории, поэтому в вашем классе Category вы бы добавили свойство навигации по коллекции для товаров
class Category
{
public int Id{ get; set;}
public string Name{ get; set; }
...
public ICollection<Product> Products{get; set;}
}