繁体   English   中英

宣布DBSet <Type> 在DBcontext中 - 实体框架代码优先

[英]Declaring DBSet<Type> within DBcontext - Entity Framework Code First

使用EF Code First生成数据库时,例如在DbContext类中声明数据库集。

public DbSet< ProductOption > ProductOptions { get; set; }

现在从我一直在做的阅读中,如果你在ProductOptions类型中有一个相关的实体,你不需要声明它,因为EF将查看依赖项并使用它们来创建所需的数据库表。

我的问题是:这是推荐做法吗? 如果是这样,那么如何访问代码中的相关类型,因为它不作为数据集存在。

这也是EF的这种自动发现功能,它是否在两个方向上都这样做,即如果你声明一个内部没有任何相关实体的数据库集,但它是某个其他实体中的实体,EF会找到它?

欢迎任何澄清。 谢谢

编辑

我所说的无法访问自动发现的类型的示例是您的播种数据。

实际上,您可以访问类型,而无需在上下文类中声明DbSets。 在Seed方法下的上下文初始化类中,您可以使用yourContext.Set()访问任何实体。添加(theObject)。 这样,您不需要在上下文类中包含DBSet属性。 我不确定您使用的是哪个版本的EF,或者您是否正在使用初始化类来播种数据。 无论如何,你仍然可以使用.Set()。Add来播种数据。

关于这个问题,EF将找到非相关实体。 就像你说的,只要一个对象是一个实体的属性,EF就应该为它创建一个表。 只要在代码中首先声明任何实体的映射,它就应该创建它以及任何可能有也可能没有映射的子实体。 我必须看看你是如何声明你的背景和映射来确定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM