![](/img/trans.png)
[英]how to add a single record in to table which has foreign key using EF code first approach
[英]Using Database first approach in Entity framework, how to fetch the data from a single table only which has multiple foreign key relationship?
我在实体框架中使用数据库优先方法。 我有两个表,即人和角色表。 人员表有3列
角色表有2列
下面是这两个表的自动生成的类以及外键关系。
public partial class Role
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Role()
{
this.People = new HashSet<Person>();
}
public int RoleId { get; set; }
public string RoleName { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Person> People { get; set; }
}
public partial class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public virtual Role Role { get; set; }
}
我使用以下代码从“角色”表中检索数据
public List<Role> GetRole()
{
var _context= new TestDBEntities();
List<Role> data = new List<Role>();
data = _context.Roles.ToList();
return data;
}
从角色表中检索数据时,从角色表中检索了所有数据,但同时检索了人表数据。 其背后的原因一定是这两个表之间的关系。 因此,我只想从“角色”表中获取数据。 任何人都可以协助我如何仅从Person中获取数据而不从Role表中获取数据吗?
显示的代码不会检索相关数据,而是在其他一些代码第一次访问People
属性时。 它可能是调试器变量窗口或一些序列化代码。
此行为称为“ 延迟加载” 。 可以通过多种方式禁用它,最简单的方法是从导航属性中删除virtual
关键字。 在“代码优先”中,您将直接在代码中执行此操作,在EDMX设计器中,我猜必须有一些控制生成的属性访问器的属性。 或使用“ 使用数据库优先”方法线程有选择地禁用延迟加载中介绍的技术。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.