C# .Name引用的属性或字段不是来自类型

C# .Name引用的属性或字段不是来自类型,c#,linq,cassandra,linq-to-entities,C#,Linq,Cassandra,Linq To Entities,这是映射函数 var mapData = new Map<RxHsLocationStateTbl>().TableName("test"); mapData.Column(c => c.ContinentNameNormalized, cm => cm.WithName(nameof(RxHsLocationStateTbl.ContinentNameNormalized)));

这是映射函数

 var mapData = new Map<RxHsLocationStateTbl>().TableName("test");
            mapData.Column(c => c.ContinentNameNormalized, cm => cm.WithName(nameof(RxHsLocationStateTbl.ContinentNameNormalized)));
           
            return mapData;
var-mapData=new-Map().TableName(“测试”);
mapData.Column(c=>c.columinamenormalized,cm=>cm.WithName(nameof(rxhslocationstattbl.columinamenormalized));
返回地图数据;
如果我以这种方式映射属性,那么一切都会正常工作

但是,如果我试图使这个过程自动化,并尝试自动映射属性,那么我就会得到这个错误

public static Map<T> AutoMap<T>(List<string> exclude) where T : class
    {
        var tableName = typeof(T).Name.ToLower();
        var mapData = new Map<T>().TableName(tableName);
        foreach (var p in typeof(T).GetProperties())
        {
            if (!exclude.Contains(p.Name))
            {
                mapData.Column( c=> c.GetType().GetProperty(p.Name).Name, cm =>  cm.WithName(p.Name.ToLower()));
            }
        }
        return mapData;
    }

AutoMap<RxHsLocationCityTbl>(new List<string>());
公共静态映射自动映射(列表排除),其中T:class
{
var tableName=typeof(T).Name.ToLower();
var mapData=new Map().TableName(TableName);
foreach(typeof(T).GetProperties()中的var p)
{
如果(!exclude.Contains(p.Name))
{
mapData.Column(c=>c.GetType().GetProperty(p.Name).Name,cm=>cm.WithName(p.Name.ToLower());
}
}
返回地图数据;
}
自动映射(新列表());
错误消息:。该名称引用的属性或字段不是来自 类型

这是此列函数的内部

   /// <summary>Defines options for mapping the column specified.</summary>
    public Map<TPoco> Column<TProp>(
      Expression<Func<TPoco, TProp>> column,
      Action<ColumnMap> columnConfig)
    {
      if (column == null) 
        throw new ArgumentNullException(nameof (column));
      if (columnConfig == null)
        throw new ArgumentNullException(nameof (columnConfig));
      MemberInfo propertyOrField = this.GetPropertyOrField<TProp>(column);
      ColumnMap columnMap;
      if (!this._columnMaps.TryGetValue(propertyOrField.Name, out columnMap))
      {
        Type memberInfoType = propertyOrField as PropertyInfo != (PropertyInfo) null ? ((PropertyInfo) propertyOrField).PropertyType : ((FieldInfo) propertyOrField).FieldType;
        columnMap = new ColumnMap(propertyOrField, memberInfoType, true);
        this._columnMaps[propertyOrField.Name] = columnMap;
      }
      columnConfig(columnMap);
      return this;
    }
///定义用于映射指定列的选项。
公共地图栏(
表达式列,
操作(配置)
{
if(列==null)
抛出新ArgumentNullException(nameof(column));
如果(columnConfig==null)
抛出新ArgumentNullException(nameof(columnConfig));
MemberInfo propertyOrField=此.GetPropertyOrField(列);
柱状图柱状图;
如果(!this._columnMaps.TryGetValue(propertyOrField.Name,out columnMap))
{
类型memberInfoType=propertyOrField作为PropertyInfo!=(PropertyInfo)null?((PropertyInfo)propertyOrField)。PropertyType:((FieldInfo)propertyOrField)。FieldType;
columnMap=新的columnMap(propertyOrField,memberInfoType,true);
此._columnMaps[propertyOrField.Name]=columnMap;
}
columnConfig(columnMap);
归还这个;
}

我不明白。我做错了什么?

没有人有解决方案?请确保您的问题包含最小的可重复示例。您是否尝试过不指定列名?驱动程序将按属性名称自动映射列。我不认为那个错误是驱动程序错误,是否存在堆栈异常来提供更多信息?如果你能给我们一个最小的可复制的例子,那会有很大帮助。没有人有解决办法吗?确保你的问题包括一个最小的可复制的例子。你有没有试过不指定列名?驱动程序将按属性名称自动映射列。我不认为那个错误是驱动程序错误,是否存在堆栈异常来提供更多信息?如果你能给我们一个最小的可重复的例子,那会有很大帮助。