4

データベース(SQL Server)で主キーをIDに設定します

EFを使用してデータを挿入すると、エラーが発生します

IDENTITY_INSERTがOFFに設定されている場合、テーブル'myTable'にID列の明示的な値を挿入できません

この特定のエンティティでは、他のエンティティと同じアプローチを使用してデータを挿入し、エラーは発生していません。

   public class MyTable 
    {
    [Key/*,DatabaseGenerated(DatabaseGeneratedOption.Identity)*/]
    public int ID{get;set;}
    public string name {get;set;}
    public string type {get;set;}
    public string status {get;set;}
    public int country {get;set;}
    public DateTime start_date {get;set;}
    public DateTime due_date {get;set;}
    }`

クエリ

    MyTable check= new MyTable();
            check.name = checkName;
            check.type = "DB";
            check.status = "New";
            check.country = country;
            check.start_date = DateTime.Now;
            check.due_date = dueDate;
            db.myTables.Add(check);
            db.SaveChanges();

更新

上記の行のコメントを外した後

(DatabaseGenerated(DatabaseGeneratedOption.Identity)) 

例外をスローします

ReferentialConstraintの依存プロパティは、ストアで生成された列にマップされます。列:'ID'

4

4 に答える 4

4

これを試して:

[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
于 2012-10-10T05:01:15.240 に答える
3

それがあなたの場合にも当てはまるかどうかはわかりません....しかし、2番目のエラーは..あなたは、 DatabaseGeneratedOption.None を持つプロパティに対してのみ有効な関係で、主キーを外部キーとして使用しています。

したがって、主キーを ID として使用するには、DatabaseGeneratedOption.Identity で装飾できます。
その場合、リレーションに ID を使用できないため、例外がスローされます (代わりに DatabaseGeneratedOption.None を使用してください)。

于 2012-10-10T04:48:23.473 に答える
0

これを一度試してください:

objDBEntities.MyTable.AddObject(
    new tblEmployee
    {
        check.name = checkName,
        check.type = "DB",
        check.status = "New",
        check.country = country,
        check.start_date = DateTime.Now,
        check.due_date = dueDate
    }
);

objDBEntities.SaveChanges();                   

詳細: Entity Framework: ID 列をサポートして行データを追加する方法

于 2013-06-28T07:27:20.867 に答える