在 EntityFramework 中使用字符串作为 PK 更新实体,将 SQL Anywhere 作为提供程序

本文关键字:SQL Anywhere 程序 实体 PK EntityFramework 字符串 更新 | 更新日期: 2023-09-27 18:37:14

我在Sybase中有一个简单的表

-- Creating table 'SimpleText'
CREATE TABLE [dbo].[SimpleText] (
    [Id] nvarchar(10)  NOT NULL,
    [SimpleValue] nvarchar(120)  NULL
);
GO
-- Creating primary key on [Id] in table 'SimpleText'
ALTER TABLE [dbo].[SimpleText]
ADD CONSTRAINT [PK_SimpleText]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

基于此表,在实体框架中创建了一个模型(使用 4.3)。插入和删除不是问题。

但是,当更新表时,当主键为"[char][number]"时,它会生成错误,即 a1 说找不到 a1 列。通过使用一个简单的跟踪工具,这是生成的 sql:

update [dbo].[SimpleText]
set [SimpleValue] = :p0
where ([Id] = :p1)
 and (Id = a1)
p0 = simpleTextValueUpdateda1
p1 = a1

更新代码在 C# 中如下所示:

  using (var model = new Entities())
  {
    var entString = model.SimpleText.Select(t => t);
    foreach (var simpleText in entString)
    {
      simpleText.SimpleValue = "simpleTextValueUpdated" + simpleText.Id;
    }
    model.SaveChanges();
  }

如果同一个键只是一个数字,则没有问题。在 .NET 4 上使用 SqlAnywhere12、EF4.3、C#

有没有人经历过同样的事情?是否有修复程序可以确保文本在 sql 中正确撇号?

在 EntityFramework 中使用字符串作为 PK 更新实体,将 SQL Anywhere 作为提供程序

已确认此问题与我正在使用的 sybase sql/ef 提供程序的版本有关。版本 12.0.1.3726 生成了此问题。从 sybase 12.0.1.3742 下载新的 EBF,此特定问题应得到解决。