Sql 错误:IDENTITY\u INSERT设置为OFF

Sql 错误:IDENTITY\u INSERT设置为OFF,sql,vb.net,linq,Sql,Vb.net,Linq,我的脚本中出现以下错误: 当identity\u insert设置为OFF时,无法在表“GameMaster”中插入identity列的显式值 下面是正在执行的代码: Dim db = New PlayerTestDataContextDataContext() If txtNewGM.Text = "" Then lbWarning.Text = "Please enter a name!" Else Dim GM As Ne

我的脚本中出现以下错误:

当identity\u insert设置为OFF时,无法在表“GameMaster”中插入identity列的显式值

下面是正在执行的代码:

        Dim db = New PlayerTestDataContextDataContext()

    If txtNewGM.Text = "" Then
        lbWarning.Text = "Please enter a name!"
    Else

        Dim GM As New GameMaster With {
            .GameMasterName = txtNewGM.Text}
        db.GameMasters.InsertOnSubmit(GM)
        db.SubmitChanges()

        Me.Close()

    End If

我的数据库中有两个表。Player,其中包含PlayerID和PlayerName列。还有GameMasters,它有GameMasterID、PlayerID和GameMasterName,PlayerID是玩家表中的外键。我在每个表上都为您设置了主键标识(玩家的PlayerID和玩家的GameMasterID)。是什么导致了这个错误。我四处搜索,发现了类似的问题,但没有一个是完全相同的…

很可能您在GameMaster类上声明了integer GameMasterID属性。由于默认情况下整数属性设置为零,因此当插入发生时,它将尝试设置所有属性,包括GameMasterID属性。因此,它尝试将标识列设置为零,但失败。

执行插入时,数据访问例程似乎隐式传递了非空值(可能是带有隐式零值的自动属性)

我唯一一次出现这种错误是在试图在数据库表中创建新记录并试图设置标识字段时。我想这可能是你得到它的唯一途径

编辑:

几乎可以肯定这里有一个自动道具

奇怪的是,编译器会保护您免受:-

    protected void Page_Load(object sender, EventArgs e)
    {
       int beef;
       string aLing = String.Format("{0}", beef);

    }
但不是:-

 public int Beef { get; set; }

 protected void Page_Load(object sender, EventArgs e)
 {
    string aLing = String.Format("{0}", Beef);
 }

调试时,您是否可以看到
GM.GameMasterID
的值?如果它有一个值,它将失败,因为它是在该表上具有标识的PK。我忘记了在调试时如何查看这些值。我使用了几乎完全相同的代码来创建新的播放器,而且它工作正常。唯一不同的是GameMaster类中有FK PlayerID。这可能是错误的部分原因吗?请划掉它。我没有修复我的错误。问题与外键相关,该外键没有得到分配给它的值。我在代码中添加了此FK的更新,效果很好!