2

Device列が1つしかないテーブルがあり、これUID nvarchar(128)が私のエンティティです:

[Table( Name="Device" )]
public class Device
{
    [Key]
    public string UID { get; set; }
}

エンティティを挿入して変更をデータベースにコミットしようとすると、すべて問題ありません。しかし、データベースには新しい行が追加されていません。同じ UID でこの操作を繰り返そうとすると、エラーが発生します

PRIMARY KEY 制約 'PK_dbo.Devices' に違反しています。オブジェクト 'dbo.Devices' に重複するキーを挿入できません。重複するキーの値は...

どうしたの?

編集:

これが私のコンテキストです:

public class DeviceContext :  BaseDbContext, IDbContext
{
    public DbSet<Entity.Device> Device { get; set; }

    public new IDbSet<T> Set<T>() where T : class
    {
        return base.Set<T>();
    }

    public int SaveChanges()
    {
        return base.SaveChanges();
    }

    public void Dispose()
    {
        base.Dispose();
    }
}

メソッドに失敗しSaveChanges()ます。BaseDbContext「接続文字列レイヤー」のみです。

DeviceContext context = new DeviceContext();
context.Device.Add(new Device() { UID = id });
context.SaveChanges();
4

1 に答える 1

1

エラーは、データがすでに保存されていることを示しています。だから私はあなたが間違ったデータベースを見ていると思います。で使用されている接続文字列を確認しますDbContext

context.Database.Connection.ConnectionStringところで、デバッガーのプロパティを見ると、どの接続が使用されているかを確認できます。

于 2013-03-15T07:53:29.797 に答える