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

时间:2012-06-13 12:13:49

标签: c# entity-framework sqlanywhere

我在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中正确撇号?

1 个答案:

答案 0 :(得分:0)

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