我已经习惯了程序语言(尽管我对T-SQL有一定的了解),但是现在(VS2010)看起来我需要使用“LINQ to SQL”或“Entity Data Model”来获取数据超出SQL Server(2005)。从历史上看,我使用过DAO或ADO记录集。我需要一次检索多个列,但总的来说,我不会更新表。我可以使用SQL Server存储过程(可能是ADO?)来进行更新。
虽然我已经开始使用Windows Forms,但在结束之前我可能会将其转移到控制台应用程序。
你们推荐什么?我的书(C#4.0 Griffiths,Adams和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
答案 0 :(得分:1)
使用实体框架,最新的补丁使其可行。 我使用nhibernate,因为这在我工作的地方更常见。 如果这个问题在一两年前出现,我不推荐实体框架,但现在几天它是一个可行的选择。 这是非常主观的,选择你认为会为你做的事情并尝试一下,它真的不仅仅是它。
答案 1 :(得分:0)
你确定要重写你的程序吗?除了解析excel之外还有什么其他的东西?我建议你使用SSIS,我已经写了一些导入/导出例程和使用SSIS的转换,它的极端快,而且它们更improving it。这真的很棒!
我认为你不需要,但是如果你需要一个GUI你可以使用启动SSIS包并被告知过程中发生了什么。
PS:开箱即用