이 질문이 너무 광범위하지 않기를 바라지 만 Entity Framework를 사용할 때 디자인 문제가 발생했습니다.ASP.net에서 비동기 적으로 시드 메서드 호출 MVC
기본적으로 우리 회사는 응용 프로그램이 올바른 데이터베이스를 수동으로 업로드하고 그렇게하기 위해 업데이트 데이터베이스를 실행하지 않고 원하는대로 시드 할 수 있기를 원합니다. 단순히 구성 파일에서 시드 메서드를 이동하고 업로드 된 경로에서 데이터베이스를 수락하기 위해 생성자에 과부하를 걸기 만하면이 측면이 쉽게 작동합니다.
그러나 다음 질문을 받으면 설계 문제가 발생했습니다. 그들은 클라이언트 측에서 진행률 표시 줄/텍스트 출력을 통해이 시드가 발생했는지 그리고 얼마나 멀리 있는지를 나타내는 표시기를 제공하기를 원합니다. 시드 방법이 동 기적으로 실행되기 때문에 클라이언트 측이 실행되는 동안 잠기 게되므로 문제가되는 것으로 판명되었습니다.
시딩 방법은 완료하는 데 약 20 분이 걸리기 때문에 클라이언트가 뭔가를 다시하기 전에 기다려야하는 시간을 확실히 알지 못하기 때문에 이것은 이상적이지 않습니다. 비동기 컨트롤러를 사용하여 구현하려고 시도했지만 seeding 메서드가 void 유형이라고 불평했습니다. 파일 업로드에서 호출되고있는 actionresult은 다음과 같이 보이는
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
string date = DateTime.Now.ToString("MM-dd-yyyy-HHmm-");
fileName = date + fileName;
var path = Path.Combine(Server.MapPath("~/bin/SampleData"), fileName);
file.SaveAs(path);
//create config instance and seed path
Reseed reseed = new Reseed(fileName);
reseed.Seed(db);
GetTimeStamp(DateTime.Now);
}
return RedirectToAction("Index");
}
는 비동기 적으로 실행할 수있는 방법이 설계하는 좋은 방법이 될 경우
사람이 알고 있나요?