1
我有这个CodeFirst实体模型一对一的关系延迟加载工作不C#
public partial class Initial
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
// more Properties
[Column(TypeName = "ntext")]
[Required]
public string CUD { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Cuenta_Id { get; set; }
public virtual Cuentas Cuenta { get; set; }
}
public partial class Cuentas
{
public Cuentas()
{
//hash set for collection properties
}
public int Id { get; set; }
[Required]
[StringLength(50)]
public string CUI { get; set; }
//properties
public virtual Initial Initial { get; set; }
public virtual Matriz Matriz { get; set; }
}
Initial
类和Matriz
两个相同的对象和任何那些被加载时,我执行:
Cuentas account = context.CuentasCtxt.Find(1);
account.Initial.Counter++;// this give a null reference because 'Initial' is not loaded
所有其他属性都装载良好,但这两个,奇点是这两个实体是他们有一个一对一的关系Cuentas
实体
编辑: 这是实体框架Codefirst从数据库中如何使关系
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Cuentas>()
.HasOptional(e => e.Inicial)
.WithRequired(e => e.Cuenta);
modelBuilder.Entity<Cuentas>()
.HasOptional(e => e.Matriz)
.WithRequired(e => e.Cuenta);
modelBuilder.Entity<Cuentas>()
.HasMany(e => e.Movimientos)
.WithRequired(e => e.Cuenta)
.HasForeignKey(e => e.Cuenta_Id)
.WillCascadeOnDelete(false);
}
你是否启用延迟加载?延迟加载是否适用于同一上下文中的其他属性? – StriplingWarrior
其实是我的第一个猜测,但它很好,要完全确定我在上下文的构造函数中将Lazy load设置为true,并且仍然不工作 –
我添加了一些关于我的codefirst关系的更多细节,我希望它可以帮助 –