2016-08-20 5 views
2

私はまずEntity Framework 6のコードを使用しています。私は、コンソールnuGetに更新データベースステートメントを実行すると、このエラーが表示さ、 'PK_dbo.EntityName'は制約ではありません。制約を落とすことができませんでした.EF34

public class Doctor 
{ 
    public string DoctorID { get; set; } 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
} 

public class ExpertiseDetails 
{ 
    [Key, Column(Order = 1)] 
    public short expertiseID { get; set; } 
    [Key , Column(Order = 2)] 
    public string DoctorID { get; set; } 

    [ForeignKey("expertiseID")] 
    public Expertise expertise { get; set; } 
    public Doctor doctor { get; set; } 
} 


public class Expertise 
{ 
    [Key] 
    public short expertiseID { get; set; } 
    public string expertiseTitle { get; set; } 
} 

は、私が ExpertiseDoctorone to many realationshipを必要とする:

'PK_dbo.ExpertiseDetails' is not a constraint. Could not drop constraint 

何が問題になっています私は、これらのような3エンティティを持っていますか?

+0

私はあなたのデータベースにデータがあると思います。データを落としてもう一度試してください。 – Moein

+0

@Moein。私はあなたの提案を試みますが、うまくいきません! – Majid

答えて

1

テーブルスキーマの名前を変更した後に同様の問題が発生したので、SQLで明示的にPK名を削除して解決しました。オリジナル

:PK-名前の

  • dbo.LogEntries:PK_dbo.LogEntries
  • 主キーは、テーブルスキーマの名前を変更した後、テーブルに変更されたときに問題が発生した私の場合は

ステップ1:スキーマの変更:PKと

  • Logging.LogEntriesそのまま

ステップ2:PK変更

  • PKを変更:DropPrimaryKey("Logging.LogEntries");

の結果は、この最後の行はPK-名に変換:存在しませんPK_Logging.LogEntries

修正: 一般的には、これを修正するいくつかの方法があります。明示的な移行では、SQL文を使用してPKを削除しました。

Sql("ALTER TABLE [Logging].[LogEntries] DROP CONSTRAINT [PK_dbo.LogEntries]"); 

注意してください。私が失敗し、以前の状態にロールバックするために移行を使用しなかった場合に備えて、私は完全なプロダクションアクセス権を持っていました。

関連する問題