我有一个更新方法:

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,结果是相同的。我希望我能找到解决方案,但不能。感谢您的回答。

有帮助吗?

解决方案

解决方案是关于修改BltoolKit源。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top