我有這樣的習俗回購,當我嘗試執行查詢時,如果我執行使用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'對象?您的對象模式可能會解釋很多關於您正在編輯的問題 –