0

このスキーマを持つ既存のデータベースがあります:

  • テーブル ユーザー : UserID、FirstName、LastName
  • テーブル マネージャー : ManagerID (PK、FK)
  • テーブル コーディネーター : CoordinatorID (PK、FK)

FK は、テーブル User の UserID フィールドを参照しています。

エンティティ側には次のものがあります。

[Table("User")]
public abstract partial class User
{
  public int UserID { get; set; }
      public virtual string LastName{ get; set; }
  public virtual string Firstname{ get; set; }

    }

[Table("Manager")]
public partial class Manager : User
{
    public int ManagerID{ get; set; }
    }

[Table("Coordinator")]
public partial class Coordinator: User
{
    public int CoordinatorID{ get; set; }
    }

私の問題は、エンティティ フレームワークが Manager_UserID (User テーブルへの一種の外部キー) という列を検索していることです。しかし、この列は私のデータベースには存在しません。データベース構造を変更せずにデータベースをモデルに正しくマップする方法はありますか

ありがとう

4

1 に答える 1

0

各テーブルで主キー名を Id に変更します。EFは、これが主キーにすることを意味することを知っています

[アップデート]

あなたは3つのテーブルについて言及しているので、 ここで説明されているように、タイプごとの継承TPTが必要だと思います 。マネージャークラスのナビゲーションプロパティとしてユーザーに言及する必要があります。また、ユーザーから継承しないでください。

public partial class Manager  
{
    public int ManagerID{ get; set; }
    public virtual User Manager { get; set; }
}

また、ナビゲーション プロパティのみが仮想である必要があります。FirstName、LastName などのフィールド プロパティではありません

また、コンテキストがどのように設定されているかを確認してください。各テーブルに 1 つずつ、3 つの DBSet が必要です。

于 2013-05-22T09:30:15.657 に答える