BLToolkit:尝试更新实体并获得“无法转换为 SQL 错误”
Posted
技术标签:
【中文标题】BLToolkit:尝试更新实体并获得“无法转换为 SQL 错误”【英文标题】:BLToolkit: Trying to update an entity and getting "can't convert to SQL error" 【发布时间】:2011-04-27 23:29:06 【问题描述】:我有一个更新方法:
protected int ProcessUpdate(TUpdateDto updateDto, Func<IQueryable<TEntity>, IUpdateable<TEntity>> firstSetter, params Func<IUpdateable<TEntity>, IUpdateable<TEntity>>[] setters)
Checker.AssertNull(updateDto);
int id = updateDto.Id.FailIfNull();
IQueryable<TEntity> query = from item in new Table<TEntity>()
where item.Id == id
select item;
IUpdateable<TEntity> updateable = firstSetter(query);
foreach (var setter in setters)
setter(updateable);
Checker.AssertNull(updateable);
updateable.Update();
return id;
和实体:
[TableName("Test")]
public class Test
[PrimaryKey, Identity]
public int Id get; set;
public string Field1 get; set;
这里是更新代码:
ProcessUpdate(updateDto, x => x.Set(e => e.Id, updateDto.Id),
x => x.Set(e => e.Field1, updateDto.Field1));
当我尝试更新表中的条目时,我得到“'Convert(item).Id' 无法转换为 SQL。”错误。我试过不更新id,结果是一样的。我希望我能找到解决方案,但我不能。感谢您的回答。
【问题讨论】:
【参考方案1】:解决方案是修改 BLToolkit 源代码。
【讨论】:
以上是关于BLToolkit:尝试更新实体并获得“无法转换为 SQL 错误”的主要内容,如果未能解决你的问题,请参考以下文章
ClassCastException:整数无法转换为 Long,同时尝试迭代实体 ID
如何在 BLToolkit 中将 DataTable 作为参数传递?
BLToolkit-mysql-connector 异常:无法加载文件或程序集 MySql.Data,版本 = 6.9.7.0