我有这样的习俗回购,当我尝试执行查询时,如果我执行使用SQL查询字符串返回一个异常 ,它不返回一个错误,但是当我使用一些extention那么我有这个例外。附近有语法错误关键字“从”
像这样:
public override IEnumerable<TableContrato> All()
{
//var query = "select * from Contrato";
//var data = Conn.Query<TableContrato>(query);
var data = Conn.GetList<TableContrato>();
return data;
}
我所有的实体都在C#中使用“表”前缀,如TableContrato
创建的,我的表称为Contrato
这样一来,我已经建立一个自定义映射器, 喜欢这个。
public class CustomMapper<TTableEntity> : PluralizedAutoClassMapper<TTableEntity> where TTableEntity : class
{
public override void Table(string tableName)
{
tableName = tableName.Replace("Table", string.Empty).Trim();
base.Table(tableName);
}
}
,这是我的回购基地
public abstract class ReadOnlyRepositoryBase<TEntity, TTable, TKey> : IReadOnlyRepository<TEntity, TKey>
where TEntity : class where TTable : class
{
protected IDbConnection Conn { get; set; }
protected DapperContext Context { get; private set; }
protected ReadOnlyRepositoryBase()
{
Context = new DapperContext();
Conn = Context.Connection;
InicializaMappings();
}
public void InicializaMappings()
{
global::DapperExtensions.DapperExtensions.DefaultMapper = typeof(CustomMapper<>);
}
}
,这里是我的例外。
我知道我可以用文字的查询做,但这种方式我不能用表达式树进行过滤,无论是仿制药。
我在做什么错了?
编辑:26/05/2015 - TableContrato
public class TableContrato
{
public Guid ContratoId { get; set; }
public Guid EmpresaId { get; set; }
public string ContratoNome { get; set; }
public string ContratoCodigo { get; set; }
public DateTime? DataDeCriacao { get; set; }
public Guid? UsuarioQueCriou { get; set; }
public TableEmpresaGrupo Empresa { get; set; }
public virtual ICollection<TableLocal> Locais { get; set; }
}
更新 - 31/05/2016 - SQL事件探查器
这里是Sql Server的配置文件的图像执行的SQL。 Aparently中, '*' 字符被错过。
我认为这是一个配置错误,所以这里是地图类
public class TableContratoMap : ClassMapper<TableContrato>
{
public TableContratoMap()
{
// ReSharper disable once RedundantBaseQualifier
base.Table("Contrato");
}
}
还有一个疑问......我熟悉EF映射,在这里我不需要映射每一列。 难道是真的小巧玲珑neccessary?
你可以发表查询,它说有一个语法错误?我知道你说这些是动态查询,但你可以让它输出它构建的每个查询的文本? –
可惜的是没有...我无法捕捉生成的SQL查询...我想那个......所以我可以看到SQL错误...但是,它没有工作... – Jedi31
能否请您提供您的' TableContrato'对象?您的对象模式可能会解释很多关于您正在编辑的问题 –