私のWindowsサービスは.NETアプリケーションです。このサービスは、EF4.3コードファーストを使用する私のデータアクセスに依存しています。サービスを実行してデータにアクセスしようとすると、次のエラーが発生します。
FullPurgeAndReplace()でエラーが発生しました:System.InvalidProgramException:共通言語ランタイムが無効なプログラムを検出しました。at System.Data.Entity.DynamicProxies.MOMInventoryItem_3ED5D5176D2C03867C62DD8E4381A882350CFD9CD931F3CD551623A6EF5C4D8E.set_Id(Decimal)at lambda_method(ElementOnly[Closure、Shaper)at System.Data.Common.Internal.Materialization .Data.Common.Internal.Materialization.Shaper 1..ctor(IEnumerable 1 source)...詳細が削除されました
2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Coordinator1.SimpleEnumerator.MoveNext() at System.Collections.Generic.List
1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
同じマシンに、同じデータアクセスプロジェクトに依存し、問題なく実行されるWebアプリケーションがあります。IISのそのWebサイトでは、それぞれのアプリケーションプールに対して[32ビットアプリケーションを有効にする]がオンになっています。
問題を調査したところ、エラーのエンティティ(MOMInventoryItem)に10進数の主キーがあるという事実に関連している可能性があることがわかりました。既存のシステムと統合しているので仕方がありません。ただし、これは1年以上前のEF 4.0の既知の問題であり、これで解決されると思います。
これが私のエンティティからのコードです:
[Table("STOCK")]
public class MOMInventoryItem
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None), Column("STOCK_ID")]
public virtual decimal Id { get; set; }
繰り返しますが、これはIISでホストされているMVCアプリを介して正常に機能しますが、同じWindows2008R2サーバー上でWindowsサービスとして失敗します。それは私のDEVマシン(Win7 / VS11)でも動作します。 私の問題は何ですか?それを恒久的に解決するか、回避するにはどうすればよいですか?
いつものように、助けは非常に高く評価され、可能な場合は往復します。