我在两个实体之间建立了一对一的关系。
每当我添加一条新记录及其各自的关系时,它就不会被映射到该集合的另一个实体。
这是我的班级类型:
public class Typology
{
// Rest of fields removed...
public virtual ICollection<Project> Projects { get; set; }
}
这是我的另一课(项目):
public class Project
{
// Rest of fields removed...
public Typology Typology { get; set; }
}
我通过这种方式建立了这种关系:
// This is my EntityTypeConfiguration for Project.
.HasRequired<Typology>(p => p.Typology)
.WithMany(t => t.Projects);
每次我需要创建一个项目时,我都会这样做:
Typology typology = dbContext.Typologies.Where(t => t.Id == projectDTO.TypologyId).First();
projectContext.Typology = typology;
然后我添加并保存更改,如:
dbContext.Projects.Add(projectContext);
dbContext.SaveChanges();
现在,因为这是一对多的关系,我在我的Project对象中添加了一个类型学,从逻辑上讲,项目应该在幕后添加&#34;&#34;自动收集该类型学。
嗯,事实并非如此。
在调试时,我试图得到这样的类型:
Typology typology = dbContext.Typologies.Where(t => t.Id == id).First();
结果是我获得了该类型的所有字段,例如Id,Description等,但项目集合为空。
答案 0 :(得分:0)
您需要向Project
Projects
对象的typology
集合添加新的Typology typology = dbContext.Typologies.Where(t => t.Id == projectDTO.TypologyId).First();
//projectContext.Typology = typology;
//dbContext.Projects.Add(projectContext);
typology.Projects.Add(new Project() {...});
dbContext.SaveChanges();
。这样的事情。
{{1}}
答案 1 :(得分:0)
问题已解决:
我只需要将此行更改为我的db context的构造函数:
Configuration.ProxyCreationEnabled = true;
因为它之前被标记为false
。
答案 2 :(得分:0)
我的问题是,当我查询模型时,我忘记添加 .Include(d => d.Projects)。
当然我不是原始海报,所以我将Projects替换为我感兴趣的收藏。
var projects = await _dbContext.Typologies.Where(t => t.Id == projectDTO.TypologyId).Include('p => p.Projects').First()