アプリケーションに問題があります。印刷キュー用のdbテーブルがあります。そのテーブルからループで読み取るとき、そのレコードをビューモデルに追加したら、データベースから削除したいと思います...これが最も効率的な方法ですが、EFは次のように吠えます。
エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照することはできません。
複数のコンテキストを使用してみましたが、それもうまくいかなかったようです。Rick Strahlのような記事を見たことがありますが、率直に言って、それは私の理解レベルを超えており、それがここでの私の問題に役立つかどうかは正確にはわかりません。
ここで達成しようとしていることを達成する簡単な方法はありますか?
これが私のコードです:
public List<InventoryContainerLabelViewModel> CreateLabelsViewModel(int intFacilityId)
{
var printqRep = new Repository<InventoryContainerPrintQueue>(new InventoryMgmtContext());
var printqRepDelete = new Repository<InventoryContainerPrintQueue>(new InventoryMgmtContext());
IQueryable<InventoryContainerPrintQueue> labels =
printqRep.SearchFor(x => x.FacilityId == intFacilityId);
List<InventoryContainerLabelViewModel> labelsViewModel = new List<InventoryContainerLabelViewModel>();
if (labels.Count() > 0)
{
//Get printq record
foreach (InventoryContainerPrintQueue label in labels)
{
IEnumerable<InventoryContainerDetail> icDtls =
label.InventoryContainerHeader.InventoryContainerDetails;
//Get print details
foreach (InventoryContainerDetail icDtl in icDtls)
{
labelsViewModel.Add(new InventoryContainerLabelViewModel()
{
...
populate view model here
}
);//Add label to view model
} //for each IC detail
//Delete the printq record
printqRepDelete.Delete(label); <======== Error Here
} //foreach label loop
}//label count > 0
return labelsViewModel.ToList();
}