簡體   English   中英

無法將值NULL插入列'ID'

[英]Cannot insert the value NULL into column 'ID'

我在使用Linq to Sql時遇到異常“無法將值NULL插入列'ID'”,我將ID屬性留空,但我已將我的ID設置為在我的DBML文件中自動生成。 當我插入沒有ID時,這將正常工作,讓我自動生成sql不使用linq。 問題是LINQ拋出一個異常,因為它看到ID是空的,即使LINQ只是讓它通過SQL也沒關系。

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
    public int ID
    {
        get
        {
            return this._ID;
        }
        set
        {
            if ((this._ID != value))
            {
                this.OnIDChanging(value);
                this.SendPropertyChanging();
                this._ID = value;
                this.SendPropertyChanged("ID");
                this.OnIDChanged();
            }
        }
    }

您需要在列定義中包含“IDENTITY”:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int ID
{ ... }

如果不解決它,請嘗試添加UpdateCheck=UpdateCheck.Never

我有一個類似的問題,由我的映射配置中缺少鍵 (我只有一個鍵,而不是復合,因為它本來應該)。

以為我會分享答案,因為我的問題很相似,但我的解決方案有點不同。

簡而言之,我的上下文類和配置如下所示:

public class MyContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // Loads the configuration:
        modelBuilder.Configurations.Add(new MyMyDataClassConfiguration()); 
    }

    // ...
}


public class MyDataClassConfiguration : EntityTypeConfiguration<MyDataClass>
{
    public MyDataClassConfiguration()
    {
        ToTable("MyDataTableName"); // Maps to table

        // Specify composite key (I was missing a key here)
        HasKey(data => new {data.First_Key_Name, data.Second_Key_Name });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM