Я думаю, начиная с предположения, что заключения Jeff корректны, не обязательно хорошо; поддержав код хранимой процедуры, а также основанные на JDBC слои данных, я могу сказать, что эти вызванные проблемы обслуживания в изобилии, главным образом связанный с неспособностью понять, что продолжалось в более высоком уровне.
база данных А является обязательно низким уровнем; это хранит числа и строки по существу. Бизнес-логика является высоким уровнем. Поэтому у нас есть абстракция.
Лично, я думаю, что путем Rails/ActiveRecord является лучшее решение наличия объекта/модели предметной области, но также и способности использовать в своих интересах реляционную базу данных.
Так: не выводите ORM, но не принимайте значение по умолчанию к нему также. Это - инструмент, который решает определенные проблемы. Проигнорировать его было бы не осведомлено, и всегда использовать его будет высокомерно.
после ссылки на Microsoft.Office.Interop.Excel также Не забудьте очистить файл finally.
using Excel = Microsoft.Office.Interop.Excel;
Excel.ApplicationClass _Excel;
Excel.Workbook WB;
Excel.Worksheet WS;
try
{
_Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
WB = _Excel.Workbooks.Open("FILENAME",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
//do something
}
catch (Exception ex)
{
WB.Close(false, Type.Missing, Type.Missing);
throw;
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);
}
Подумайте с помощью System.Diagnostics.Process для запуска, отслеживания и закрытия Excel. Этот сайт дает хорошее вступление: http://www.thescarms.com/dotnet/Process.aspx , включая запуск с невидимым окном и отправку в него ввода.