【发布时间】:2025-12-16 05:40:01
【问题描述】:
好吧,我现在介入了。我正在将一个程序从 Access vba 转换为 C#,这样我就可以独立运行它(这是另一个故事......)该程序读取一个 Excel 文件,然后验证每一行和每一列以确保数据有效(数字等)然后查找各种数据字段以在 SQL Server 上创建事务表。事务表永远不会重新验证,因此第一次尝试时它必须是正确的。
我习惯于过程语言(虽然我对 T-SQL 的了解尚可),但现在(VS2010)看来我需要使用“LINQ to SQL”或“实体数据模型”来获取数据出 SQL Server (2005)。从历史上看,我使用过 DAO 或 ADO 记录集。我需要一次检索多个列,但总的来说,我不会更新表。我可以使用 SQL Server 存储过程(大概是 ADO?)进行更新
虽然我已经开始使用 Windows 窗体,但我可能会在完成之前将其转移到控制台应用程序。
你们有什么推荐的吗?我的书(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
【问题讨论】:
-
请不要在标题前加上“C#”之类的前缀。这就是标签的用途。
-
LINQ to SQL 和实体框架都可以与 SQL Server 一起使用,而且微软最近对 EF 的重视程度超过了 LINQ to SQL。听起来你可以用一本关于 LINQ 的书来做,基本上......
-
好的,我不会这样给我的标题加前缀。我更习惯于没有标签的论坛。感谢您的建议。
标签: visual-studio-2010 sql-server-2005 entity-framework linq-to-sql c#-4.0