
こんにちは
ご存じのとおり、
.NET Framework 4.5のリリースバージョンは既にリリースされており、
Visual Studio 2012の最終バージョンもダウンロードできるようになっています。
ベータ版以降、新しいVisual Studioに精通し、リリース後、Visual Studioのrtmリリースと.NET Framework 4.5を実際に使用し始めました。
.NET Frameworkの新しいバージョンには、Entity Frameworkの新しいバージョンも含まれています。 すでに5番目。 より正確には、それはそこまで行きません-プロジェクトを作成するとき、NuGetリポジトリからファイルをアップロードします。 しかし、いずれにせよ、新しいプロジェクトはライブラリの正確に5番目のバージョンを使用します。
続行する前に、EF5の新機能と、このバージョンの使用を開始する理由を簡単に説明します。
Entity Framework 5.0の新機能
- 生産性の大幅な向上-最大67%。
- 列挙型のプロパティのサポート。これは、すべてのアプローチ(モデル、データベース、コードファースト)で使用できます。
- DbGeographyおよびDbGeometryタイプを使用した空間データタイプのサポート。 また、モデル、データベース、コードファーストのアプローチでも利用できます。
- コードを生成する際、Visual Studioエディターは新しいモデルの基本クラスとしてデフォルトのDbContextを使用するようになりました。 つまり、EFコンストラクターを使用して作成された新しいモデルは、DbContextおよびPOCOからデフォルトクラスを作成します。 この場合、必要に応じて、ObjectContextに基づいてコードの生成に戻ることが可能です。 既存のモデルは、DbContextコードの生成に自動的に変更されません。
- Database Firstアプローチを適用すると、関数はユーザーテーブルを返すことができるようになりました。
これは完全なリストではありませんが、これらの機能には非常に興味がありました。
イノベーションの詳細については、
こちらをご覧ください 。
タスクの本質
私のデータ管理プロジェクトの多くでは、ASP.NET Dynamic Dataに基づいて作成されたソリューションを使用しています(このソリューションの適用方法と、一般に、scaffoldテクノロジを実装するツールについて
は前に書きました )。 既に説明したように、Entity Frameworkの新しいバージョンでは、Database Firstモードを使用する場合でも、以前のように
ObjectContextではなく
DbContextクラスに基づいてコンテキストを生成するようになりました。 動的データは、ObjectContextが基本コンテキストクラスとして使用されることを前提としています。
この点で、ダイナミックデータを正しく操作するには、コンテキストの初期化と一部のコントロールの動作をわずかに変更する必要がありました。
Pranava Rastogiのブログでこのテーマに関する非常に良い記事を見つけました。
この情報は、Dynamic Dataを使用しており、Entity Frameworkの新しいバージョンへのアップグレードを計画している人にとって役立つと思います。
DbContextベースのコンテキストと対話するためのASP.NET動的データの構成
ダイナミックデータを新しい形式で正しく機能させるには、3つの簡単な手順を実行する必要があります。
1.プロジェクトルートのGlobal.asaxコードを変更する
DefaultModel.RegisterContext(() => { return ((IObjectContextAdapter)new YourContextType()).ObjectContext; }, new ContextConfiguration() { ScaffoldAllTables = true });
2. Dynamicdata \ Fieldtemplatesディレクトリの制御コードManyToMany.ascx.csを変更します
protected override void OnDataBinding(EventArgs e) { base.OnDataBinding(e); object entity; ICustomTypeDescriptor rowDescriptor = Row as ICustomTypeDescriptor; if (rowDescriptor != null) {
3. Dynamicdata \ Fieldtemplatesディレクトリの制御コードManyToMany_Edit.ascx.csを変更します
protected ObjectContext ObjectContext { get; set; } public void Page_Load(object sender, EventArgs e) {
変更後、Dynamic Dataは何も起こらなかったかのように機能し続け、開発プロセスを引き続き楽しむことができます。
ソース
以下は、記事のトピックに関するリンクのリストです。 それらが役に立つことを願っています。