0

VS 2012 を使用した MVC4 プロジェクトに複数のエンティティを含むモデルがあります。最近、「vwTeacherNames」という名前のビューを DB に追加し、モデルを更新しようPlorizingとして、その更新のオプションをオフにしました。

次に、エンティティの名前を「TeacherName」に変更します。ここで Prj をチューニングすると、教師用の DropDownList を定義する場所でこの例外がスローされます。

Invalid object name 'dbo.TeacherNames'.

カスタム ツールの使用、.tt ファイルの削除、再生成など、さまざまな方法を試しましたが、問題は解決しません。

では、EFに正しいテーブル(実際にはビュー)の名前をどのように伝えることができますvwTeacherNamesか?

どうもありがとう

4

1 に答える 1

1

それを見つけた!そして、さらに微調整してここに追加します。

public class myDbContext : DbContext
{
    public PtDbContext()
        : base("DefaultConnection")
    {

    }

    ... //some entities

    //Here it is:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TeacherName>().Property(t => t.FullName)
            .HasColumnName("TeacherName");

        modelBuilder.Entity<TeacherName>().ToTable("vwTeacherNames", schemaName: "dbo");                        

    }
}

更新:以前に定義したものを定義することで時間を浪費するのはなぜですか?! デフォルトのテーブル命名規則を破棄して、Prj の進行を楽しんでください。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //Adding this line tells the EF not to go through that convention
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();               
    }

EntitySetNameそのため、エンティティのプロパティによってクエリを構築する必要がEntityNameあります。最初のものはDBテーブル名で、2番目はDbContextで使用するエンティティ名です。

于 2013-06-03T11:15:34.743 に答える