2012-03-07 14 views
4

私は単純な3つのテーブル参照を持っています。それは十分に平野に見えます。そこでの関連付けはDBMLで作成されます。実際にはテーブル定義の外部キーではありません。どうして?それは長い話です。私のことを信じて、私はその戦いと戦ってしまった。C#値がnullでない場合、なぜLinqがNullについてクラッシュするのですか?

enter image description here

私はLINQを使用して新しいファイルタイプレコードを追加しようとすると、それはエラーでクラッシュ:は、列ID、テーブルのFileTypeにNULL値を挿入することはできません。

  _fileType = new FileType() 
      { 
       Id = def.ID, // This is the integer "1" 
       Name = def.Name, 
       FileCategoryId = def.Category.ID, 
       DateLabel = def.DateLabel, 
       FileNamePrefix = def.Prefix, 
       FolderName = def.Folder, 
       CreateInspection = 0 
      }; 

      try 
      { 
       dc.FileTypes.InsertOnSubmit(_fileType); 
       dc.SubmitChanges(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

しかし、あなたはコードを気づく場合、Idが設定されています。私は値をチェックして、それはnullではありません。これは整数です。私は何が欠けているか間違っているのですか?

正しいIDのFileCategoryレコードが存在することを確認しました。私は行方不明のものが他にありますか?

+1

おそらく自動インクリメントフィールドですか?その場合、レコードを挿入するIDを設定する必要はありません。 –

+0

いいえ、私はそれが単なるフィールドであることを確認しました。それに対して定義されたアイデンティティ仕様はありません。私はキーのように使用しますが、実際には整数です。管理スタジオでは、私はフィールドを自由に設定し変更することができます。 – Jerry

+0

このコードから生成されているT-SQLを表示できますか? – slypete

答えて

0

In your table mapping, is the field marked as 'Auto Generated Value' in the Properties pane? I've had insert/update issues with that before... – Tieson T. Mar 7 at 6:52

私は彼に、このための小道具を与えるだろうが、彼はコメントではなく、公式の答えとしてこれを残しました。

2

私はこれまでにこのようなものを見ました。

「id」だけを割り当て、関連するオブジェクトは割り当てないと起こります。

は、以下のことを試してみてください。

new FileType 
{ 
    FileCategory = def.Category, 
    ... 
} 
+0

私は毎回これを忘れているようです。念押し有難う。 :) –

関連する問題