C# 属性未在部分实体类/接口上注册

C# 属性未在部分实体类/接口上注册,c#,entity-framework,csvhelper,C#,Entity Framework,Csvhelper,我正在使用该框架通过Salesforce批量API将数据推送到Salesforce。该应用程序是一个使用实体框架的简单C#控制台应用程序。我目前仅使用帐户对象,但将添加其他表/对象,因此我希望使代码尽可能可重用 我的挑战之一是源表中有一些字段需要使用CSVHelper[ignore]属性忽略。只要我直接将属性放置在自动生成的实体类属性上,该键字段就会被忽略,如下所示: public partial class Account { [CsvHelper.Configuration.Attr

我正在使用该框架通过Salesforce批量API将数据推送到Salesforce。该应用程序是一个使用实体框架的简单C#控制台应用程序。我目前仅使用
帐户
对象,但将添加其他表/对象,因此我希望使代码尽可能可重用

我的挑战之一是源表中有一些字段需要使用CSVHelper[ignore]属性忽略。只要我直接将属性放置在自动生成的实体类属性上,该
字段就会被忽略,如下所示:

public partial class Account
{
    [CsvHelper.Configuration.Attributes.Ignore]
    public long Key { get; set; }
    // ...
}
但是,这不是首选,因为当我通过实体设计器向程序添加其他表/对象时,将重新生成此文件

因此,我尝试的第一个解决方案是简单地创建另一个具有不同文件名但具有相同类签名和属性的分部类:

public partial class Account
{
  [CsvHelper.Configuration.Attributes.Ignore]
  public long Key { get; set; }
}
但是,由于:

因此,我做了一些研究,发现了几种避免将属性直接放置在自动生成的实体代码上的方法

方法1:

[MetadataType(typeof(Account.MetaData))]
public partial class Account
{
    internal class MetaData
    {
        [CsvHelper.Configuration.Attributes.Ignore]
        long Key { get; set; }
    }
}
编译时,
[Internal]
属性不会注册,并且代码不会忽略
字段

方法2:

public interface IEntityMetadata
{
    [CsvHelper.Configuration.Attributes.Ignore]
    long Key { get; set; }
}

[MetadataType(typeof(IEntityMetadata))]
public partial class Account : IEntityMetadata
{
}
同样,代码会编译,但是
[Internal]
属性不会注册,并且代码不会忽略
字段

方法3:

[MetadataType(typeof(AccountAttributes))]
public partial class Account
{ }

public class AccountAttributes
{
    [CsvHelper.Configuration.Attributes.Ignore]
    public long Key { get; set; }
}
与前两种方法一样,代码可以编译,但是
[Internal]
属性不会注册,代码也不会忽略
字段

只有当
[Ignore]
属性直接应用于自动生成的实体
帐户
类属性时,代码才会忽略
字段

我的研究表明,我使用的三种方法中的任何一种都应该达到我的目标。我可能遗漏了什么使这些方法无法工作

多谢各位