我对在与 EF Code First Approach 的 1:m 关系中定义外键感到困惑。
浏览各种教程,我看到了各种方法 - 不知道有什么区别。
假设我有 2 个模型,Product
其中Category
1 个类别有很多产品。
public class Product
{
public int ProductId { get; set; }
public int CategoryId { get; set; }
public string Name { get; set; }
// Method 1a
public virtual ICollection<Category> Categories {get; set; }
// Method 1b
public virtual List<Category> Categories {get; set; }
// Method 1c
public Category Category {get; set; }
// Method 1d
public virtual Category Category { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
// Method 2a
public List<Product> Products { get; set; }
// Method 2b
public ICollection<Product> Products { get; set; }
// Method 2c
public virtual List<Product> Products { get; set; }
// Method 2d
public virtual ICollection<Product> Products { get; set; }
}
public class ExampleContext : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
产品表:我认为如果我使用ICollection
/并没有什么不同List
,但什么时候使用 1a/1b、1c 或 1d?
类别表:我认为如果我使用ICollection
/并没有什么不同List
,但什么时候使用 2a、2b、2c?