にありますので、新しいトランザクションは許可されていない)画像
に、私は、関数QuickSaveを持っているように、それはエラーになります()を呼び出すと、最初にデータを保存してからコンテキストを変更し、コンテキストを保存しようとします。私が文脈を保存しているとき、私はエラーを超えています。私にとっては、ストアドプロシージャを呼び出した後でコンテキストを保存することが重要です。ここでエラー:私はDb.SaveAsyncを(使用してコンテキスト保存しようとしていたときにセッションで実行されている他のスレッドは、C#
私のコードです:。)あなたは、通常の方法を使用してdb.Asyncを(使用している
var items = StoryTaskCount(item.ProjectId, storyList);
//var st = items.FirstOrDefault();
foreach(var st in items) {
var story = await Factory.StoryService.StoryByIdAsync(item.ProjectId, st.Id);
if (st.Count == 0) {
taskItem = await Factory.TaskService.QuickSave(item.ProjectId, story.StoryId, "Task for " + ConstantCompany.Prefix.StoryCode + story.StoryCode, true);
story.TaskId = taskItem.TaskId;
}
story.TaskCount = st.Count;
}
public IQueryable <BSTChildVM> StoryTaskCount(decimal projectId, string ids) {
var res = (from story in Factory.StoryService.ForProject(projectId)
join st in Factory.BusinessHelperService.GetIds(ids) on story.StoryId equals st
join task in Factory.TaskService.AllTasks(projectId) on story.StoryId equals task.StoryId
into ftask from task in ftask.DefaultIfEmpty()
group task by story.StoryId into taskGroup select new BSTChildVM
{
Id = taskGroup.Key,
Count = (from item in taskGroup where item.TaskId != null select item).Count()
}
);
return res;
}
'StoryTaskCount'からのレコードは、反復して読み込まれます。 'SaveChanges'を呼び出すと、トランザクションが作成されます(複数のステートメントを送る必要があります)が、進行中の読み取りを妨げます。最初の行セット全体( 'ToList')を読むか、別のコンテキストインスタンスの変更を行います(ただし、変更検出のためにはエンティティインスタンスをコンテキストに追加する必要があります)。 – Richard