Я пытался выполнить пользовательский запрос SQL. Однако я получаю следующую ошибку при выполнении моего метода.
Источник: Entity Framework
Сообщение. Средство чтения данных несовместимо с указанным KPMG.DE.Impact.Data.Entities.Config. Элемент типа «Id» не имеет соответствующего столбца в считывателе данных с тем же именем.
Это мой метод:
private readonly IRepositoryAsync<Config> _configRepository;
private IEnumerable<Config> getConfig()
{
var sqlCommand = "select * from tbl_Config";
return this._configRepository.SelectQuery(sqlCommand);
}
Это мой класс сущности:
public class Config : Entity
{
public int Id { get; set; }
public string Key { get; set; }
public string Value { get; set; }
public string ValueType { get; set; }
public string Description { get; set; }
}
Это мой IRepositoryAsync
:
public interface IRepositoryAsync<TEntity> : IRepository<TEntity> where TEntity : class, ITrackable
{
Task<TEntity> FindAsync(params object[] keyValues);
Task<TEntity> FindAsync(CancellationToken cancellationToken, params object[] keyValues);
Task<bool> DeleteAsync(params object[] keyValues);
Task<bool> DeleteAsync(CancellationToken cancellationToken, params object[] keyValues);
Task<int> ExecuteCustomSQL(string sqlCommand, params object[] parameters);
}
Это мой метод .SqlQuery в репозитории:
public virtual IQueryable<TEntity> SelectQuery(string query, params object[] parameters)
{
return this.Set.SqlQuery(query, parameters).AsQueryable();
}
Вот отображение:
// Table & Column Mappings
this.ToTable("db.TBL_CONFIG");
this.Property(t => t.Id).HasColumnName("PK_CONF");
this.Property(t => t.Key).HasColumnName("KEY");
this.Property(t => t.Value).HasColumnName("VALUE");
this.Property(t => t.ValueType).HasColumnName("VALUETYPE");
this.Property(t => t.Description).HasColumnName("DESCRIPTION");
Команда SQL, которую я выбрал, является простой, поскольку я сначала хотел протестировать метод .SqlQuery
. Он говорит, что не может найти имя столбца для «Id», хотя я проверил сопоставление, и оно определенно там.
Я что-то пропустил?