У меня есть эти модели CodeFirst Entityотношение один к одному ленивых нагрузки не работает с #
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
. Объект
SQL-схема выглядит следующим образом
EDIT: Это как Entity Framework 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);
}
Включили ли вы ленивую загрузку? Работает ли Lazy Loading для других свойств в том же контексте? – StriplingWarrior
На самом деле это была моя первая догадка, но это было прекрасно, чтобы быть уверенным, что я установил Lazy load в true в конструкторе контекста и все еще не работает –
Я добавил несколько подробностей о моих отношениях codefirst. Я надеюсь, что это поможет –