Ну, я сейчас в это вмешался. Я конвертирую программу из Access vba в C #, чтобы я мог запустить ее независимо (это другая история ...) Программа читает файл Excel, а затем проверяет каждую строку и столбец, чтобы убедиться, что данные действительны (числовые и т. Д.) а затем ищет различные поля данных для создания таблицы транзакций на SQL Server. Таблица транзакций никогда не проверяется повторно, поэтому она должна быть правильной с первой попытки.
Я привык к процедурным языкам (хотя у меня есть сносные знания T-SQL), но теперь (VS2010) кажется, что мне нужно использовать либо «LINQ to SQL», либо «Entity Data Model», чтобы получить данные из SQL Server (2005). Исторически я использовал наборы записей DAO или ADO. Мне нужно извлекать несколько столбцов одновременно, хотя по большому счету я не буду обновлять таблицы. Я могу сделать обновления, используя хранимые процедуры SQL Server (и предположительно ADO?)
Хотя я начал работать с Windows Forms, я, скорее всего, перейду на консольное приложение, прежде чем закончить.
Что вы, ребята, рекомендуете? Моя книга (C # 4.0 Гриффитс, Адамс и Либерти) в основном говорит о модели данных сущностей. Но так как я использую исключительно SQL Server (2005), разве «Linq to SQL» более не подходит? Любые ссылки, чтобы помочь мне начать? Вот пример «метода» (в vba ...), который я сейчас использую, который довольно автономен и используется для моей первой попытки:
Function ValidateOverride(LaborRateID As Variant) As Long
If IsNull(LaborRateID) = True Or IsNumeric(LaborRateID) = False Then
ValidateOverride = 0
Exit Function
End If
Dim rstOverrideLaborRates As DAO.Recordset2
Set rstOverrideLaborRates = CurrentDb.OpenRecordset("SELECT * FROM tblStaffAugLaborRates WHERE ID=" & LaborRateID, dbOpenDynaset, dbSeeChanges + dbFailOnError)
If rstOverrideLaborRates.EOF Then
HandleMessages "Row Rejected -- Invalid Override Labor Rate"
ValidateOverride = 0
Else
ValidateOverride = LaborRateID
If (dtCurrentWorkDate < rstOverrideLaborRates!EffectiveDate) Or (dtCurrentWorkDate > rstOverrideLaborRates!ExpirationDate) Then
HandleMessages "Row Rejected -- Override Labor Rate is not within its valid dates"
ValidateOverride = 0
End If
If rstOverrideLaborRates!VendorID <> lngCurrentVendorID Then
HandleMessages "Row Rejected -- Override Labor Rate is not valid for this vendor"
ValidateOverride = 0
End If
End If
rstOverrideLaborRates.Close
Set rstOverrideLaborRates = Nothing
End Function