2011-12-09 12 views
0

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

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

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

編集:は残念ながらWebサービスがオプションではありませんので、私たちのクライアントはまだ、ナビのバージョン4.0を使用しています..私はすでにSQLへのアクセス、彼らのために別のアプリケーション(携帯端末上で動作する倉庫管理システムの一部)を開発しましたサーバーには直接接続していましたが、それは全く同じ規模ではありませんでした。

答えて

3

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

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

あなたの主な質問に対する答えはいいえです。データベースの最初の開発のポイントは、各データベースの変更後にモデルを再生成することです。特に、各データベースの変更が変更を壊している場合(データベースを介した統合が良い選択ではない別の理由)

+1

お返事ありがとうございます。私はいくつかの詳細を提供する質問を更新しました。私たちは生のSQLを使用しなければならないと思います。クライアントに最新のバージョンのNavがある場合は、Webサービスを使用していました。 –

+0

古いバージョンのNavisionでいくつかのアプリケーションを開発しましたが、まだアプリケーションサーバー経由でアクセスしました。 MSMQは、アプリケーション固有のメッセージの通信およびカスタムハンドラに使用されました。 –

+0

さて、私はそれを調べなければならないでしょう。それは私のための解決策かもしれません。再度、感謝します ! –

関連する問題