0

私は現在、ASP.NET MVC 3 を使用してイントラネット アプリケーション プロジェクトに取り組んでいます。主な要件の 1 つは、アプリケーションで作成されたすべてのデータが、クライアントの ERP ソフトウェアでも利用できる必要があるということです。MS Dynamics NAV で動作します。NAV は SQL-Server をデータベースとして使用するため、データへのアクセスは実際には問題になりません。

実際、データ アクセスに Entity Framework を使用する実用的なプロトタイプが既にあります。ここでの主な問題は、私の会社も ERP 内で非常に多くのカスタム機能を開発しているため、読み書きするデータベース テーブルの一部が頻繁に変更されることです。これは、通常の状況では実際には問題になりませんが、ここでは、データベース内のすべてのフィールドが としてマークされていますnot null。これは、Dynamics NAV の非常に厄介な機能です。これは、テーブルに追加されたすべてのフィールドがコードを壊すことを意味します。Entity Framework は、フィールドを認識していないときに null を挿入しようとするからです。

テーブルを変更するたびにモデルを再生成する必要のないソリューションを考えられる人はいますか?

編集 :残念ながら、私たちのクライアントはまだバージョン 4.0 の Nav を使用しているため、Web サービスはオプションではありません.. SQL Server に直接アクセスする別のアプリケーション (モバイル端末で実行される倉庫管理システムの一部) を既に開発していますが、まったく同じスケールではありません。

4

1 に答える 1

3

Dynamics NAV のような ERP と統合する必要がある場合は、すべてのデータ アクセスをそのアプリケーション サーバーに渡す必要があります。Dynamics NAV は、アプリケーション サーバーと通信するための Web サービスを公開していると思います。そのテーブルに直接アクセスすることは、特にトランザクションとデッドロックの可能性のために、災害への道です。クエリを微調整できないため、EF はこれをさらに悪化させます。

データベースを介したアプリケーション統合では、アクセスするすべてのアプリケーションによって生成される SQL を完全に制御する必要があります。

あなたの主な質問への答えはノーです。データベースを最初に開発するポイントは、データベースを変更するたびにモデルを再生成することです。特に、データベースを変更するたびに変更が破壊される場合 (データベースを介した統合が適切な選択ではないもう 1 つの理由)。

于 2011-12-09T11:02:26.237 に答える