エンティティフレームワーク6を既存のデータベースでコードファーストで使用していますが、エンティティをデータベーステーブルにマッピングする際に問題があります。コードファースト:既存のデータベーステーブルへのエンティティのマッピング
通常、私はデータベースファーストアプローチを使用し、エンティティとコンテキストコードを生成しますが、デザイナを使用することは大きな苦痛になりました。
EFでスキーマを変更しないようにDatabase.SetInitializer(null)を設定しました。
データベース・スキーマ:コード-最初
:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ReleaseControlContext : DbContext
{
public ReleaseControlContext()
: base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString)
{
Database.SetInitializer<ReleaseControlContext>(null);
}
public DbSet<Project> Projects { get; set; }
}
電話番号:
using(var context = new ReleaseControlContext())
{
var projects = context.Projects.ToList();
}
次の例外がスローされます。
SqlExceptionが:無効なオブジェクト名 'dbo.Projects'。
私のデータベーステーブルがプロジェクトないプロジェクトあるためです。私の文脈のDbSet<Project>
の名前を "Project"に変更したくないのは、それが意味的に間違っているからです。
質問:
私はプロジェクトデータベーステーブルとDbSet<Project> Projects
コレクションの間でマッピングするために流暢なAPI /データ注釈を使用する必要がありますか?
次の方法で呼び出されなければなりません;テーブルはProjectsと呼ばれなければなりませんが、間違っていますが、データ注釈を使用して名前[Table( "Projects")]を使用することができます。 –
DBContextを作成する前にイニシャライザを呼び出そうとしました。それをどこかに置いてください。 –