2

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 で正しくアポストロフィされていることを確認するための修正はありますか?

4

1 に答える 1

0

この問題は、使用していたsybase sql/efプロバイダーのバージョンに関連していることが確認されています。バージョン12.0.1.3726でこの問題が発生しました。sybase、12.0.1.3742から新しいEBFをダウンロードすると、この特定の問題が解決されるはずです。

于 2012-06-18T13:30:52.043 に答える