EF7 一对一关系
EF7 One to One relationships
我目前正在努力掌握新的 EF7,但在处理一对一关系时,我 运行 有一种奇怪的行为。
我有以下型号
public class Material
{
[Key]
[Required]
[Column(TypeName = "bigint")]
public long Id { get; set; }
[Required]
[MaxLength(128)]
public string Name { get; set; }
[Required]
[MaxLength(512)]
public string Description { get; set; }
[Required]
[Column(TypeName = "money")]
public decimal CostPerUnit { get; set; }
public virtual Unit UnitOfMeasure { get; set; }
[Required]
[Column(TypeName = "bit")]
public bool IsActive { get; set; } = false;
}
public class Unit
{
[Key]
[Column(TypeName = "bigint")]
public long Id { get; set; }
[Required]
[MaxLength(32)]
public string Name { get; set; }
[Required]
[MaxLength(64)]
public string Description { get; set; }
[Required]
public string Type { get; set; }
}
我正在按如下方式构建表格:
builder.Entity<Unit>().Key(u => u.Id);
builder.Entity<Unit>().Property(u => u.Name).MaxLength(64).Required();
builder.Entity<Unit>().Property(u => u.Description).Required();
builder.Entity<Unit>().Property(u => u.Type).Required();
builder.Entity<Material>().Key(m => m.Id);
builder.Entity<Material>().Property(m => m.Name).Required();
builder.Entity<Material>().Property(m => m.Description).Required();
builder.Entity<Material>().Property(m => m.CostPerUnit).Required();
builder.Entity<Material>().Property(m => m.IsActive).Required();
我现在遇到的问题是,当我尝试使用度量单位查询 material 时,度量单位始终设置为空,但是当我检查生成的表时我可以清楚地看到外键确实被创建了。
我也尝试在创建 OnModel 时强制建立关系,但我仍然无法检索单元对象。
builder.Entity<Material>().Reference(m => m.UnitOfMeasure).InverseReference().ForeignKey<Unit>(u =>
我应该如何添加此引用或者是否支持此引用?
您是如何尝试获取参考资料的?此时延迟加载在 EF7 中不起作用。您必须进行预加载 (dbContext.Materials.Include(m => m.UnitOfMeasure)) 或它的显式版本。
我目前正在努力掌握新的 EF7,但在处理一对一关系时,我 运行 有一种奇怪的行为。
我有以下型号
public class Material
{
[Key]
[Required]
[Column(TypeName = "bigint")]
public long Id { get; set; }
[Required]
[MaxLength(128)]
public string Name { get; set; }
[Required]
[MaxLength(512)]
public string Description { get; set; }
[Required]
[Column(TypeName = "money")]
public decimal CostPerUnit { get; set; }
public virtual Unit UnitOfMeasure { get; set; }
[Required]
[Column(TypeName = "bit")]
public bool IsActive { get; set; } = false;
}
public class Unit
{
[Key]
[Column(TypeName = "bigint")]
public long Id { get; set; }
[Required]
[MaxLength(32)]
public string Name { get; set; }
[Required]
[MaxLength(64)]
public string Description { get; set; }
[Required]
public string Type { get; set; }
}
我正在按如下方式构建表格:
builder.Entity<Unit>().Key(u => u.Id);
builder.Entity<Unit>().Property(u => u.Name).MaxLength(64).Required();
builder.Entity<Unit>().Property(u => u.Description).Required();
builder.Entity<Unit>().Property(u => u.Type).Required();
builder.Entity<Material>().Key(m => m.Id);
builder.Entity<Material>().Property(m => m.Name).Required();
builder.Entity<Material>().Property(m => m.Description).Required();
builder.Entity<Material>().Property(m => m.CostPerUnit).Required();
builder.Entity<Material>().Property(m => m.IsActive).Required();
我现在遇到的问题是,当我尝试使用度量单位查询 material 时,度量单位始终设置为空,但是当我检查生成的表时我可以清楚地看到外键确实被创建了。
我也尝试在创建 OnModel 时强制建立关系,但我仍然无法检索单元对象。
builder.Entity<Material>().Reference(m => m.UnitOfMeasure).InverseReference().ForeignKey<Unit>(u =>
我应该如何添加此引用或者是否支持此引用?
您是如何尝试获取参考资料的?此时延迟加载在 EF7 中不起作用。您必须进行预加载 (dbContext.Materials.Include(m => m.UnitOfMeasure)) 或它的显式版本。