4

edmx私は2つのテーブルを備えたシンプルなものを持っています。テーブルは単一の によって関連付けられていNavigation Propertyます。(1 対多)。

コードを実行すると、「無効なオブジェクト名 dbo.Enquiries」という例外が発生します。

データベースには存在dbo.Enquiriesしないため (実際には と呼ばれますdbo.Enquiry)、エラー自体は自明です。しかし、その名前はどこにありますか?どうすれば修正できますか?

要求どおりにコードを表示するように編集されました。

 var foo = (from  d in context.Dealerships
            join e in context.Enquiry
                on d.Id equals e.DealershipId
            where (d.ParentBusinessId == id)
            select d).AsEnumerable();

生成される sql は次のとおりです。

  foo   {SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[BusinessName] AS [BusinessName]
FROM  [dbo].[Dealerships] AS [Extent1]
INNER JOIN [dbo].[Enquiries] AS [Extent2] ON [Extent1].[Id] = 
[Extent2].[DealershipId]
WHERE [Extent1].[ParentBusinessId] = @p__linq__0}   

しかし、私の人生では、内部結合で Inquiry という名前を Inquiries に変更することがどこでどのように決定されているのかわかりません。

4

4 に答える 4

5

答えを見つけました。複数形はモデル生成のみです。名前を複数形にしないように DbContext に明示的に指示する必要がありました (あえてこのデータベースの名前を変更するつもりはなかったので、使用されていた奇妙な規則に固執していました)。

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  }
于 2013-02-01T15:09:25.470 に答える
0

edmx からテーブルを削除し、モデルを更新してみてください。

于 2013-02-01T14:03:14.127 に答える
0

モデルベース開発を採用しているようです。この場合、モデルに変更を加えたように見えますが、データベースには反映されていません。

モデルからデータベースを生成するオプションを使用すると、データベースがモデルと同期されます。

于 2013-02-01T14:14:39.260 に答える
0

EF モデルのグラフィカル ビューを閉じてみてください。右クリックで編集し、XML エディターで開きます。テーブルへのマッピングがそこにあるはずで、それを修正できます。または、インポート/更新後にモードを変更した場合は、モデルを完全に削除して、モデルを再度インポートすることができます。
モデルにアクセスしたコードは問題ないはずです。

于 2013-02-01T14:39:40.477 に答える