爲什麼EF(4.0)花費這麼長時間才能將行插入表中?當我剛剛關閉應用程序後查詢數據時,它返回了大約20000行,之後我注意到,雖然應用程序已關閉,但數據未完成插入,插入操作發生在後臺。爲什麼是這樣?有什麼方法來通知應用程序(我計劃將這些插入作爲Windows服務運行,因爲它們長期運行)插入真的完成了嗎?有什麼方法來提高這些插入的速度?我只有一個外鍵關係,所以它也不是一個非常複雜的數據模型。謝謝你的幫助!.Net EF在應用程序關閉後很長時間插入數據行
應用程序是ASP.Net應用程序。這是我撥打SaveChanges()
的那段代碼。
do
{
if (token != null)
{
response = context.Execute<NetflixService.Title>(token)
as QueryOperationResponse<NetflixService.Title>;
}
using (Models.MovieContext movieCtxt = new Models.MovieContext())
{
foreach (var item in response)
{
IList<Models.MovieGenre> genres = new List<Models.MovieGenre>();
foreach (var genreIterator in item.Genres)
{
var genre = new Models.MovieGenre
{
Genre = genreIterator.Name
};
genres.Add(genre);
}
//genres.Add(new Models.MovieGenre { Genre = "filmy" });
var movie = new Models.MovieCatalog
{
MovieTitle = item.Name,
MovieGenres = genres
};
movieCtxt.MovieCatalogs.Add(movie);
}
movieCtxt.SaveChanges();
}
}
while ((token = response.GetContinuation()) != null);
如果在程序關閉後它仍在繼續,那麼它必須位於數據庫中,例如,趕上它的交易日誌。數據庫是什麼?有多少行,有多少/你在桌上有多麼複雜的指標等等?沒有更好的方法來插入所有的數據嗎? – Rup 2012-03-14 17:20:57
如何關閉ASP.NET應用程序?你正在殺死Web服務器還是停止在Visual Studio中進行調試?停止調試不會停止Web服務器的運行。當SaveChanges()返回時插入完成。爲了表現你必須展示你的代碼草圖。 「*花了這麼久*」是什麼意思? – Slauma 2012-03-14 19:27:57
感謝您的回覆。我已經添加了代碼。請檢查。 – learnnew 2012-03-14 20:48:29