2012-01-18 7 views
3

私は手動で私のテーブルに新しい行を挿入しようとWhenver、私は次のエラーを取得する:ASP.NET MVC/EF - 手動でIDを割り当てる(PK)

Cannot insert the value NULL into column 'VehicleID', table 'TestServer.Vehicles'; column does not allow nulls. INSERT fails. 
The statement has been terminated. 

私はVehicleIDを設定していたとしてもカントー私のコードでは、そのよう:

List<Vehicles> vehicleList = context.Vehicles.ToList(); 

if(vehicleList.Count == 0) 
{ 
    vehicle.VehicleID = 1; 
} 
else 
{ 
    vehicle.VehicleID = vehicleList.Last().VehicleID + 1; 
} 

context.Vehicles.Add(vehicle); 
context.SaveChanges(); 

// Other code... 

このアクションでは、私が実際には別のモデルを更新していますので、私はこれを行うために必要な理由はあるが、私はまた、他のモデルのイムに基づいて、私の車のモデルを、更新したいですアップデート

My Vehi cleIDプロパティに[Key]データアノテーションが設定されていますが、これが理由ですか?

答えて

9

考えられる理由の1つは、モデルでキープロパティをデータベース生成されていないとマークしていない可能性が考えられます。あなたは、このいずれかのデータ注釈付き...

public class Vehicle 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int VehicleID { get; set; } 

    //... 
} 

...または流暢APIで行うことができます:整数キーEFについて

modelBuilder.Entity<Vehicle>() 
    .Property(v => v.VehicleID) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 

をカラムは、データベース内の自動生成されたアイデンティティであることを前提とし、デフォルトでIDの値をサーバーに送信しません。 DB内で列が自動生成されない場合、エラーが発生します。

+0

ありがとうございました! [DatabaseGenerated(DatabaseGeneratedOption.None)]を使用して、私の問題を解決しました – CallumVass

+0

@Slaumaもし私があなたに10倍アップアップすることができれば。私はこれに対して4日間頭を打ちました。ありがとうございました!!!!! – dotnetN00b

関連する問題