2012-01-13 6 views
13

私の英語は申し訳ありません。EFがid-columnにNULLを挿入しようとしているのはなぜですか?

私はEntity Framework 4.0(モデル初)を使用してプロジェクトを作成しています。 は、プロジェクトの開始時に、私はこの問題に直面している:私は、データベース内に満たされたオブジェクトを挿入しようとしていますが、私はexeptionを得る:

は、「列 『区分』にNULL値を挿入することはできません、テーブル'ForumDB.dbo.Categories';列はNULLを許可しません。INSERTは失敗し、文は終了しました。

Category usingCategory = new Category("Using Forums", "usingforums", 0); 
    using (Context) 
    { 
     Context.Categories.AddObject(usingCategory); 
     Context.SaveChanges(); 
    } 

私は、このオブジェクトをチェックし、私はそれが満たされていることを確信しています。念のため

public Category(string name, string urlName, int index) 
{ 
    CategoryId = Guid.NewGuid(); 
    Name = name; 
    UrlName = urlName; 
    CategoryIndex = index; 
} 

何が起こっているかを教えてください? 助けてくれてありがとう!

+0

カテゴリIDはどのデータ型ですか? – Kyle

+0

@Kyle、guid(uniqueidentifier)。 –

答えて

24

これを見てください:https://stackoverflow.com/a/5338384/171703 - エンティティフレームワークは、あなたのCategoryIdフィールドがアイデンティティであると仮定している可能性があります。

+1

いいですが、私はモデルファーストを使っていますが、この問題では、問題はコードファーストの範囲で解決されています。 –

+0

@ KovpaevAlexeyその質問の受け入れられた答えは、まずコードのためのものですが、その質問の特定のリンクされた答えはモデルのためのものです。 – hvd

+0

@hvdこの問題は、DB側でIDを生成することを追加したときに解決されました。 –

14

私は今日この問題に遭遇し、データベースから自分のEFクラスを再生成しなければなりませんでした。

ことをやった後、私はEFが追加されていることが見つかりました:

[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public int Id { get; set; } 

をSQLでID列にするために使用が、アプリに割り当てられたものに変更されたこの「ID」フィールドに。

私はあなたがその属性を持っていない場合はEFは実際に私はPKとしてのint idを持つテーブルを作成していたが、忘れていたデータベース(「設定より規約」)

+1

私にも働きました:クラスを再生成する必要はありませんでした。属性に属性を追加するだけで機能しました。 – sluiper

+0

私のために働いた..非常にありがとう – Steph8

3

にIDを送信しないだろうと思い"Identity Specification" = Trueを設定する

+0

あなたは私の一日を作った! – Hari

関連する問題