這是一個壞主意嗎?有沒有更好的方法來達到同樣的效果?這樣使用嵌套的Try..Catch塊不好嗎?
// assume that "name" is a string passed as a parameter to this code block
try
{
MainsDataContext dx = new MainsDataContext();
try
{
Main m = dx.Main.Single(s => s.Name == name);
return m.ID;
}
catch (InvalidOperationException)
{
Guid g = Guid.NewGuid();
Main s = new Main
{
Name = name,
ID = g
};
dx.Mains.InsertOnSubmit(s);
dx.SubmitChanges();
return g;
}
}
catch (Exception ex)
{
// handle this
}
這裏的目的是讓如果它存在的記錄的ID,否則創建一個記錄並返回它的ID。
什麼是dx.Dispose()for?不應該由GC自動處理?我應該使用LinqToSql將它放入所有try..catches的'finally'部分嗎? – Nate 2009-10-21 16:58:31
@Nate,使用DataContext時,最好在using語句**中使用它(使用(DataContext dx = new .......)**),這將確保連接儘快關閉可能的並且對象被處置。由於我們在這裏使用try-catch,我們需要確保無論我們如何處理我們的連接。例外與否。 – 2009-10-21 17:00:03
這只是確保連接快速關閉? GC會最終自行關閉它嗎?現在你指出它使得senes,我只是不明白是必要的,或者只是一個好主意? – Nate 2009-10-21 17:04:52