2016-08-09 10 views
0

現在、.NET RC1からRTMへのアップグレード中です。アップグレードプロセスの一環として、Entity Frameworkを7.0.0-rc1から1.0.0にアップグレードする必要があります。 process is described hereとかなり簡単です。このプロセスの一環として、table naming conventionsが変更されました。Entity FrameworkのDisplayNameがテーブル名ではありません。

私の文脈でOnModelCreatingに対応するコードを追加しました。

foreach (var entity in builder.Model.GetEntityTypes()) 
{ 
    entity.Relational().TableName = entity.DisplayName(); 
    //System.Diagnostics.Debug.WriteLine($"Model = {entity.Model}"); 
    //System.Diagnostics.Debug.WriteLine($"Name = {entity.Name}"); 
    //System.Diagnostics.Debug.WriteLine($"Model = {entity.DisplayName()}"); 
} 

ご覧のとおり、マッピングが正しく行われていないため、一部の情報が印刷されています。これらの出力では、DisplayNameがデフォルトのままです。したがって、Gender(私のモデル)は(私のテーブル)にマップされません。それが何か変更された場合は、テーブル名をモデルにマッピングするためにデータアノテーションとFluent APIも使用しています(デフォルトをそのままにすることはありません)。私はこれがどのようにそれに影響するのか分かりません。同様に:私はここで間違って

[Table("GenderLookup")] 
public class Gender 
{ 
    // ... 
} 

builder.Entity<ApplicationUser>().ToTable("PreExistingUser"); 

は何をしているのかもしれませんか?

答えて

0

は、私が起こっているかもしれないもののために私の検索を続け、次のように述べてthis announcement from Rowan Millerを発見:

インパクト既存のアプリに

をあなたはRC1からRC2にアプリをアップグレードする場合、あなたはいくつかを持っていますオプション:

  • モデルからデータベースを生成している場合は、新しい変更を適用して名前変更を適用したり、EnsureCreated()ラットを使用している場合はデータベースを削除して再作成したりできます彼女はマイグレーションよりも)。
  • RC1で選択されたものと一致するテーブル名を手動で指定します。これはOnModelCreatingまたは[Table]属性を使用して行うことができます。 See the docs for more info.
  • 次のセクションのコードを使用して、テーブル名をRC1で選択したものと一致するように構成します。

それを読んだ後、私は戻って私のコードに鳩と[Table]属性を持っていなかったかOnModelCreatingでカバーされていなかったカップルのテーブルがあったことを発見しました。 (私のチームは、最初にデフォルトに転倒するのを防ぐためにチームを使用する必要があるので、これはレビューで見逃されている可能性があります)

私はその状況を修正すると、他の誰かが同じ問題を抱えている場合に備えて、私は共有したいと思っていました。

関連する問題