エンティティフレームワークコードファースト。私は、エラーをカスケードがテーブルの上に削除を実装しようとしているが、取得していますEntity Frameworkコードファースト - カスケード削除
「のいずれかのパラメータ@objnameがあいまいであるか主張@objtype(COLUMN)が間違っています。」
I以下のモデルがあります:
Aユーザー表:
public class User {
public int id { get; set; }
public List<UserSickness> Sickness { get; set; }
}
A酔い表:
public class UserSickness {
public int id { get; set; }
public DateTime SicknessDate { get; set; }
public List<Symptom> Symptoms { get; set; }
}
A症状表:基本的にはそう
public class Symptom {
public int id { get; set; }
public string Description { get; set; }
}
、 、私はユーザーが欲しい「病気」の日があり、その症状が何であったかを言うことができます。
同様に、これが実装上の問題です。
Entity Framework (EF) Code First Cascade Delete for One-to-Zero-or-One relationship
、次のコードを追加しました:私は、特定の日付の「病気」を削除すると私は、カスケードは、私は、次のSOの質問に従っている
「症状」を削除し、削除したい
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
// delete symptoms
modelBuilder.Entity<DatapultData.Model.UserSickness>()
.HasOptional(a => a.Symptoms)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
私はこれを実装するための移行を追加すると、それは次のコードを生成します。
namespace Data.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class addedcascadingdeleteonsymptoms : DbMigration
{
public override void Up()
{
DropForeignKey("dbo.Symptoms", "UserSickness_id", "dbo.UserSicknesses");
DropIndex("dbo.Symptoms", new[] { "UserSickness_id" });
RenameColumn(table: "dbo.UserSicknesses", name: "UserSickness_id", newName: "Symptoms_id");
CreateIndex("dbo.UserSicknesses", "Symptoms_id");
AddForeignKey("dbo.UserSicknesses", "Symptoms_id", "dbo.Symptoms", "id", cascadeDelete: true);
DropColumn("dbo.Symptoms", "UserSickness_id");
}
public override void Down()
{
AddColumn("dbo.Symptoms", "UserSickness_id", c => c.Int());
DropForeignKey("dbo.UserSicknesses", "Symptoms_id", "dbo.Symptoms");
DropIndex("dbo.UserSicknesses", new[] { "Symptoms_id" });
RenameColumn(table: "dbo.UserSicknesses", name: "Symptoms_id", newName: "UserSickness_id");
CreateIndex("dbo.Symptoms", "UserSickness_id");
AddForeignKey("dbo.Symptoms", "UserSickness_id", "dbo.UserSicknesses", "id");
}
}
を
}
しかし、私は「更新データベース」を行うとき、私は私が解決する方法を理解していない、次のエラーが表示されます。..
Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong.
誰もが私が間違っているの何お勧めできます?
ありがとうございました
エラーメッセージに示された...私も「SicknessId」と「SyptomId」に、すべての「ID」フィールドの名前を変更しようとしています同じエラーが発生する –
私のコメントが更新されました。これをチェックしてください。これは私のために働く。 –
それは意味をなさない。移行スクリプトを削除すると、「update-database」が実行されることはありませんか? –