任何指向DbSet属性名的点?

时间:2015-08-31 15:11:56

标签: entity-framework

public DbSet<Lecture> Lectures{ get; set; }

这里的物业名称是否重要?似乎如果我想使用该模型,我会使用&#34; Lecture&#34;。生成的表格只是<>中的复数形式,例如,如果我理解正确,我可以更改&#34;讲座&#34;到&#34; Leprechauns&#34;我的桌子仍然会被叫做#34; Lectures&#34;基于<Lecture>,我将使用context.Lectures从中进行选择。财产名称有什么意义吗?

我在tutorial或msdn上找不到答案。

编辑:进一步测试时 - db表名称基于尖括号中的模型名称,但要实际从db中选择(在C#代码中),则使用DbSet propertyName中指定的属性名称。仍然想知道这是如何工作的细节。

2 个答案:

答案 0 :(得分:2)

实体框架构建数据库模型,其中每个类/模型代表entity type,每个DbSet代表一组单一类型的实体。当您在DbSet<T>中声明DbContext属性时,会告知EF将类型T的类包含为实体类型之一,并且它会自动包含任何其他连接类型(例如导航)对象图中的属性)。

所有这一切都说,物业本身的名称可能并不重要。实际上,您也可以使用Fluent API添加实体类型,如果需要,不要声明任何DbSet属性,在这种情况下,您可以使用context.Set<T>来检索{{1 }}秒。这些物业真的只是为了方便。

也许这也很有用: https://msdn.microsoft.com/en-us/data/jj592675.aspx

答案 1 :(得分:0)

DbSet对应于数据库中的表格或视图,因此您将使用DbSet来访问,创建,更新,删除和修改表格数据。
顺便说一句,你可以删除约定:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}