【问题标题】:Server-generated keys and server-generated values are not supported by SQL Server CompactSQL Server Compact 不支持服务器生成的键和服务器生成的值
【发布时间】:2024-04-30 19:15:03
【问题描述】:

插入记录时:

        Poster_ratings prItem = new Poster_ratings
        {
            poster_id = posterId,
            rating = rating,
            email = email,
            name = name,
            event_id = eventId,
            id = GetNextID()
        };

        entity.AddToPoster_ratings(prItem);
        entity.SaveChanges();

我收到不支持服务器生成的值的错误。

我使用的是 Sql compact 3.5(MS Sync Framework 支持的最高版本)。我已经阅读了this post 并将此表的 'setStoreGeneratedPattern' 设置为 none 但这也没有帮助,我一直收到同样的错误。我应该怎么做才能解决这个问题?

提前问候和感谢

【问题讨论】:

  • 目前自增主键列(id)使用的类型是int32,应该改成什么类型​​?
  • 尝试链接答案中指出的唯一标识符。
  • 我的猜测是这会给出同样的错误..而且我也不能真正改变类型,因为我的 sql ce 数据库是基于另一个 sql server 构建的(使用 MS 同步框架) .
  • 听起来像是设计中的一个根本缺陷。我非常惊讶有人会想将 int 用于标识列,尤其是在处理和同步时。

标签: c# entity-framework linq-to-entities sql-server-ce


【解决方案1】:

看看这个:Server-generated keys and server-generated values are not supported by SQL Server Compact

正如 Erik 上面指出的,在同步时为 PK 使用标识值是有问题的。如果两个或多个客户端通过身份插入行并获得相同的自动生成编号,则在将它们同步到服务器时会出现 PK 冲突。

这里是在 Sync Framework 中选择 PK 的链接:Selecting an Appropriate Primary Key for a Distributed Environment

【讨论】:

    最近更新 更多