.NET 4.5 で Entity Framework 5 を使用する ASP.NET MVC 4 アプリケーションがあります。私が抱えている問題は、フロントエンドで作成された切り離されたエンティティを挿入すると、遅延読み込みが機能しないことです。
追加(または更新)するコードは次のとおりです。
public static int PersistMergeEntity(EntityTwo entityTwo)
{
int entityId;
using (var _db = new EntityDb())
{
if (_db.EntityTwo.Any(e => e.EntityTwoId == entityTwo.EntityTwoId))
{
_db.Entry(entityTwo).State = EntityState.Modified;
}
else
{
_db.EntityTwo.Add(entityTwo);
}
_db.SaveChanges();
//_db.Entry(entityTwo).Reference(e => e.EntityOne).Load();
entityId = entityTwo.EntityOne.EntityId;
}
EntityBo.UpdateData(entityId);
return entityTwo.EntityTwoId;
}
ここに私のエンティティがあります:
public class EntityTwo
{
[Key]
[ForeignKey("EntityOne")]
public int EntityTwoId { get; set; }
public Decimal NbValue { get; set; }
public virtual EntityOne EntityOne { get; set; }
}
public class EntityOne
{
[Key]
[ForeignKey("EntityTwo")]
public int EntityOneId { get; set; }
[ForeignKey("Entity")]
public int EntityId { get; set; }
public CsMonthDomain CsMonth { get; set; }
public int NbYear { get; set; }
public Decimal NbValue { get; set; }
public virtual Entity Entity { get; set; }
public virtual EntityTwo EntityTwo { get; set; }
}
AndEntity
は、更新または追加するたびに計算する必要がある別のエンティティですEntityTwo
。
コメント行のコメントを外すと、コードが機能します。しかし、それがそこに示されている方法である場合、遅延読み込みは機能せず、null
例外が発生します。遅延読み込みが に設定されてtrue
おり、ナビゲーション プロパティを明示的に読み込むと機能するため、エンティティはおそらく正しいと思われます。
名前については申し訳ありませんが、残念ながら実際のコードを投稿することはできません;(