2016-05-11 16 views
1

EFを使用して2つのエンティティ間に1対1の関係を作成しようとしていますが、:MVC 5 - エンティティを1対1の関係で保存できません

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

public class CumulativeRecord 
{ 
    [ForeignKey("ANA")] 
    public int CumulativeRecordId { get; set; } 
    public virtual ANA ANA { get; set; } 
} 

public class ANA 
{ 
    public int ANAId { get; set; } 
    public virtual CumulativeRecord CumulativeRecord { get; set; } 
} 

と私は流暢API使用:次のように

私の2つのモデルがあり、この設定にもかかわらず

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<ANA>() 
     .HasRequired(a => a.CumulativeRecord) 
     .WithRequiredPrincipal(a => a.ANA); 
} 

を、私は新しいCumulativeRecordオブジェクトを保存することができません。

これは、オブジェクトを保存する時、私の現在の試みです:

var experience = new CumulativeRecord { ANA = newANA }; 
db.CumulativeRecords.Add(experience); 
db.SaveChanges(); 

それはまた、私は、新しいデータベースで作業していないです、このデータベースが存在し、私はそれにモデルとの関係を追加していていることは注目に値します。

+0

あなたは 'テーブルの主キー' CumulativeRecord'をCumulativeRecordId'作っ設定しようとしたことがあり、次のようになりますか? EFは主キーのないテーブルでは更新できません。 –

+0

コンベンションに従うと、CumulativeRecordIdはデフォルトでプライマリキーになります。しかし、私はとにかく '[Key]'を追加しようとします –

答えて

0

このエラーは質問に答えます。 CumulativeRecordIdフィールドに特定の値を挿入しようとしていますが、データベースではCumulativeRecordテーブルの主キーです。

IDENTIYと設定されています。つまり、自動的にインクリメントされるため、この列に値を挿入する必要はありません。

また、1対1の関係であるため、関係の両側に外部キーが必要です(here)。

あなたのクラスは

public class CumulativeRecord 
{ 
    public int CumulativeRecordId { get; set; } 

    public int AnaRecordId { get; set; } 
    [ForeignKey("AnaRecordId")] 
    public virtual ANA ANA { get; set; } 
} 

public class ANA 
{ 
    public int ANAId { get; set; } 

    public int CumulativeRecordId { get; set; } 
    [ForeignKey("CumulativeRecordId")] 
    public virtual CumulativeRecord CumulativeRecord { get; set; } 
} 
+0

オブジェクトを保存する際の私の更新された試行を見てください、私は手動でキーを挿入しようとしていません。 –

+0

私の答えは少し変更されました。上記のように外部キーを定義しましたか? –

+0

このようにして新しいエラーが発生すると、 'ANA_CumulativeRecord_Target :: Multiplicityは関係 'ANA_CumulativeRecord'のロール 'ANA_CumulativeRecord_Target'で有効ではありません。依存ロールのプロパティはキープロパティではないので、依存ロールの多重度の上限は '*' ' –

関連する問題