Entity Frameworkを使用してC#でクラスと関数を生成していますが、SQLサーバーとやり取りする必要があります。
参考までに、これが私のテーブルの1つです。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Area](
[ID] [bigint] identity (1, 1) primary key,
[Name] [nvarchar](100) NOT NULL
)
GO
エンティティデータモデルWizard( 'EF Designer from database'を使用)を実行した後、私のプロジェクトにはedmxファイルといくつかの新しい.csファイルがありますが、必要なものがすべて生成されていないようです。
たとえば、私のDatabaseEntitiesクラスには、次のものがあります。
public virtual DbSet<Area> Areas { get; set; }
ただし、タイプ「Area」の定義はありません(他の3つの欠落しているタイプとともに)。ストアドプロシージャの関数もありません。
新しいファイルを削除してモデルウィザードを再実行しようとしましたが、同じ結果が得られます。
他の誰かがこれに遭遇しましたか?
サイドノート:
過去数回の試行中に、ウィザードの実行時に「EntityFrameworkパッケージがプロジェクトにインストールされていません」というエラーが発生することに気付きました。ただし、クリックして通過すると、まだedmxとmodel.contextが生成されます。
EntityFrameworkバージョン6.0.0と6.1.2の両方で同じ問題が発生しました。
フレームワークを再インストールしても、問題に影響はありませんでした。
更新:
Nugetをアンインストールして最新バージョンを再インストールすると、エラーなしでnuget経由でEntityFrameworkをインストールできました。ただし、ADO.NETデータモデルが[新しいアイテムの追加]ダイアログに表示されなくなりました。
私がしたことにはいくつかのステップがありました、そして私は質問の下でコメントした人々にいくらかの信用を与えなければなりません。
1)nugetパッケージマネージャーをアンインストールし、最新バージョンを再インストールしました(どうやら私のものは新鮮ではありませんでした)。これにより、エラーやロールバックメッセージなしで、ナゲットを介してEntityFrameworkをインストールできました。
2)これが役に立ったかどうかはわかりませんが、MicrosoftのWebサイトからVisualStudio用のEntityFrameworkToolsも再インストールしました。両方が必要かどうかはまだわかりません。
3)ADO.NETエンティティデータモデルテンプレートが[新しいアイテムの追加]ダイアログに表示されていないようです。 「追加->新しいアイテム」の代わりに「追加->コンポーネント」を選択すると、両方のリストの下に神秘的に表示されました。
それが完了すると、EF Designerを実行でき、すべてが問題なく生成されました。
テーブルにキー列があることを確認してください。テーブルにキー列がない場合、ビューは生成されません。
列名がデータ型やキーワードなどの予約語でないことを確認してください。今日、誰かが単に「DATE」と呼んでいた、明らかにデータ型である列を持つテーブルをインポートしようとして問題が発生し、EFが失敗しました。 SQLでビューを作成し、予約されていない名前で列のエイリアスを作成すると、テーブルは正常にインポートされ、必要なすべてのクラスが生成されました。