1

挿入を実行しようとすると、次のエラーが表示されます。

値 NULL を列 'Request_Cat_ID'、テーブル 'dbo.Request_Categories' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

このエラーが私を困惑させる理由は、キー列が int ではなく文字列であるテーブル設定が非常に似ているためです。そのテーブルに問題なく挿入できます。インサートは小さくてシンプルなので、内訳は次のとおりです。

モデル:

[Table("Request_Categories")]
public class RequestCategory
{
    [Key]
    [Column("Request_Cat_ID")]
    public int RequestCategoryID { get; set; }
    [Column("Request_Category")]
    public string RequestCategoryName { get; set; }
}

ビューモデル:

public class RequestCategoryViewModel
{
    public IEnumerable<RequestCategory> RequestCategories { get; set; }
}

コントローラーの方法:

[HttpPost]
public JsonResult AddRequestCategory(RequestCategory model)
{
    var foo = model.RequestCategoryID; //There is a value that appears here. It does have an int type.
    db.RequestCategories.Add(model);
    db.SaveChanges();
    return Json("");
}

ビューから渡される場所:

$.post('@Url.Action("AddRequestCategory", "Services", new { area = "services" })',
{
     RequestCategoryID: form.currentTarget.RequestCategoryID.value,
     RequestCategoryName: form.currentTarget.RequestCategoryName.value,
}, AddRow, "json");

アドバイスやヒントは大歓迎です!

4

1 に答える 1

2

自動インクリメントしたくないので、 DatabaseGeneratedAttributetoを追加する必要があります。RequestCategoryID

[Key]
[Column("Request_Cat_ID")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[public int RequestCategoryID { get; set; }

Entity Frameworkintは、慣例により主キーを自動インクリメントします。

于 2013-07-11T19:59:30.910 に答える