【问题标题】:Adding attribute to auto generated Linq to SQL class将属性添加到自动生成的 Linq to SQL 类
【发布时间】: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


【解决方案1】:

必须编辑生成的文件。分部类可用于向 type 添加属性,并为类型添加成员 - 但您不能向分部类的另一部分中的成员添加属性。如果我们可以,那就太好了,我同意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多