efプロジェクトは既存のレガシーデータベースを使用していますが、ef-migrationsを使用して新しいテーブルを追加しています。これらのエンティティでは、新しいスキーマを使用してテーブルを作成し、レガシーテーブルから分離します。我々は、dbテーブル上で複数形のクラス名を持つ規約を使用します。 しかし、(複数のテーブル名を持たない)レガシーテーブルにマップする新しいクラスを追加すると、efはマッピングを無視するようです。 エンティティクラス:エンティティフレームワークのコードファーストはテーブルマッピングを無視します
public class Aktor:IVersionedEntityWithId
{
public int Id { get; set; }
public string Navn { get; set; }
public byte[] Version { get; set; }
}
マッピングコード:
protected virtual void MapAktor(EntityTypeConfiguration<Tilsyn.Domain.Aktor> config){
config.ToTable("dbo.Aktor");
config.Property(v=>v.Version).IsConcurrencyToken().IsRowVersion();
config.HasKey(e=>e.Id);
}
例外:
System.Data.EntityCommandExecutionException: コマンド定義を実行中にエラーが発生しました。詳細については、内部例外を参照してください。 ---> System.Data.SqlClient.SqlException:無効なオブジェクト名 'dbo.Aktors'。
テーブル名を取得するために、まだsqlがクラス名に生成されたようです。この写真には何が欠けていますか? ToTable
メソッドを間違って使用していますか?
更新:クラス名をテーブル名以外に変更すると動作するようです。名前をもう一度変更すると、問題は解決しませんでした。 EFキャッシュまたは隠しマッピングファイルが存在するかどうか
BTW: 'ToTable'は、テーブルとスキーマ名をマッピングする2パラメータのオーバーロードを持っています:' config.ToTable( "Aktor"、 "dbo") '。しかし、おそらくあなたの問題とは関係がありません。 – Slauma