2

我有一个Device只有一列的表UID nvarchar(128),这是我的实体:

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

当我尝试插入实体并向数据库提交更改时一切正常。但是在数据库中没有添加新行。如果我尝试使用相同的 UID 重复此操作 - 我会出错

违反主键约束“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 回答