0

Ну, я вступил в это сейчас. Я конвертирую программу из Access vba в C#, поэтому я могу запускать ее самостоятельно (это еще одна история ...). Программа считывает файл Excel, а затем проверяет каждую строку и столбец, чтобы убедиться, что данные действительны (числовые и т. Д.). а затем ищет различные поля данных для создания таблицы транзакций на SQL Server. Таблица транзакций никогда не проверяется повторно, поэтому с первой попытки она должна быть правильной.Лучший способ обработки данных в SQL Server?

Я привык к процедурным языкам (хотя у меня есть проходимое знание T-SQL), но теперь (VS2010) мне кажется, что мне нужно использовать «LINQ to SQL» или «Entity Data Model», чтобы получить данные из SQL Server (2005). Исторически я использовал записи DAO или ADO. Мне нужно получить несколько столбцов за раз, хотя по большому счету я не буду обновлять таблицы. Я могу сделать обновления с помощью хранимых процедур SQL Server (и, предположительно, ADO?)

Хотя я начал работу с использованием Windows Forms, я, скорее всего, перевешу ее на консольное приложение, прежде чем закончить.

Что вы, ребята, рекомендуете? Моя книга (C# 4.0 Griffiths, Adams and Liberty) в основном говорит о модели данных сущностей. Но поскольку я использую только 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 
+1

Пожалуйста, не прикрепите свои заголовки к «C#» и тому подобное. Для этого нужны теги. –

+1

LINQ to SQL и Entity Framework работают как с SQL Server, так и Microsoft в последнее время уделяют больше внимания EF, чем LINQ to SQL. Похоже, вы могли бы сделать с книгой по LINQ, в основном ... –

+0

Хорошо, я не буду приписывать такие названия. Я больше привык к forumns, у которых нет тегов. Спасибо за совет. –

ответ

0

Есть у уверены и хотите переписать свою программу? Что еще это касается синтаксического анализа excel? Я бы порекомендовал вам использовать SSIS, я написал некоторые процедуры импорта/экспорта и преобразование с использованием SSIS, это extreme fast и они improving it еще больше. Это действительно здорово!

Я не думаю, что вам нужно, но если у вас есть потребность в GUI, вы можете использовать стартовый пакет SSIS и получать уведомления о том, что происходит в процессе.

PS: Logging осуществляется из коробки

+0

Я на цыпочках в SSIS. Я столкнулся с проблемами. Иногда аутентификация была проблемой (книга Excel находится в SP ....) Затем я смог (я не помню, как) на самом деле читать .xlsx, но получил ошибки столбца, с которыми я не мог работать. Помните, что некоторые из столбцов «кажутся» числовыми, но не являются, и наоборот. Excel, являющийся очень слабо типизированной системой, делает предположения и передает переменные соответственно. Я слишком легко сдаюсь? –

+0

Yup, u сдался слишком легко. В диспетчере соединений Excel вы можете настроить все столбцы как строки и преобразовать значения позже. Кстати, я сам использую EF dbcontext, но для этого сценария я бы выбрал SSIS. Возможно, задайте этот вопрос в другой форме с помощью тега SSIS? – rfcdejong

1

Использование Entity Framework, последние обновления сделал его жизнеспособным. Я использую nhibernate, потому что это более распространено, когда я работаю. Если бы вопрос возник бы год или два назад, я бы не рекомендовал структуру сущности, но теперь дни это жизнеспособный вариант. Это действительно субъективно, выбрал то, что, по вашему мнению, сделает это за вас, и попробуйте, это не более того, что на самом деле.

+0

Я нашел это: [link] http://msdn.microsoft.com/en-us/data/ff191186.aspx, который я наблюдаю. Пока я могу создать структуру. Теперь, могу ли я использовать («потреблять») его ... следите за обновлениями ... –

Смежные вопросы