【发布时间】:2013-10-11 01:10:41
【问题描述】:
我有一个 dbml 文件并将一个 Products 表放到它上面。我现在可以访问自动生成的 Products 类文件,这很棒。
我想导出一个 CSV 文件的内容并将其保存到这个表中,所以我决定使用 Linq to CSV http://aspnetperformance.com/post/LINQ-to-CSV-library.aspx
似乎为了读取文件,需要用属性修饰属性,即
<CsvColumn(Name:= "ProductName", FieldIndex:= 1)>
但是当我使用 Products 类时,它会返回一个错误,即找不到列名(我知道这一点,因为我创建了一个不同的项目,一旦添加了上述属性,它就可以毫无问题地读取文件)
所以我创建了一个部分类并添加了属性:
<Metadatatype(GetType(ProductsMetadata))> _
Partial Public Class Products
End Class
Friend Class ProductsMetadata
<CsvColumn(Name:= "ProductName", FieldIndex:= 1)>
Public Property ProductName As String
End Class
但是这仍然不起作用。我需要添加属性的原因是,当我保存它时,我可以将 Products 对象传递给保存方法
myDataContext.Products.InsertOnSubmit(ProductObject)
myDataContext.SubmitChanges()
是否可以以上述方式或任何其他方式添加属性?
【问题讨论】:
-
我通常发现遵循单一职责原则的最佳方法是创建另一个表示您要放入 CSV 文件中的数据的类,然后使用 LINQ 将您的查询映射到该类.您的 LINQ to SQL 类的职责是充当数据层映射,而不是充当 CSV 导出对象。
-
您能否指向一个链接,我可以在其中看到此操作并用作指导?
标签: c# vb.net linq-to-sql