繁体   English   中英

ServiceStack ORMLite无法更新标识列

[英]ServiceStack ORMLite Cannot Update Identity Column

我正在使用ServiceStack ORMLite来尝试更新我的数据库中的记录。 我所有的POCO都实现了IHasID接口

public interface IHasId
{
    int Id { get; set; }
}

在我的POCO中,我有以下属性

private int id;

[ServiceStack.DataAnnotations.Alias("TableName_ID")]
    public int Id
    {
        get { return id; }
        set
        {
            if (value != this.id)
            {
                this.id = value;                    
                NotifyPropertyChanged("Id");
            }
        }
    }

我的每个存储库类都从DataRepositoryBase <T>类继承一个具有以下方法的类:

public virtual T Update(T entity)
    {
        using (IDbConnection db = CreateDbConnection())
        {
            db.Update<T>(entity, e => e.Id == entity.Id);
            return entity;
        }
    }

当我在子存储库上调用此方法时,我收到以下错误:

System.Data.SqlClient.SqlException(0x80131904):无法更新标识列'TableName_ID'。

我该如何解决这个错误?

我究竟做错了什么?

谢谢!

杰里米

您还应该使用[AutoIncrement]标记Identity列,例如:

[AutoIncrement]
[Alias("TableName_ID")]
public int Id { ... ]

您通常不会更新标识字段,因为它们是由数据库自动生成的。 在某些特定情况下,您可能需要更新标识字段,但需要使用SQL,因为它要求您在每个查询结束时使用SET语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM