2012-04-06 8 views
0

エンティティフレームワークを介してデータを取得しようとするとInvalidProgramExceptionが発生し続けます。エンティティを使用するInvalidProgramException

using (var db = new Entities()) 
{ 
    var utrs = from u in db.users_to_roles 
       select u; // utrs.Count() > 1 at this point. So, there IS data! 

    users_to_roles utr = utrs.FirstOrDefault(); // InvalidProgramException! 
    utrs.GetEnumerator(); // InvalidProgramException! 
    utrs.ToList(); // InvalidProgramException! 
} 

表は単純です:

CREATE TABLE `users_to_roles` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    `userid` bigint(20) NOT NULL, 
    `roleid` bigint(20) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `fkuserid` (`userid`), 
    KEY `FK22FCE45052C7D0B5` (`roleid`), 
) 

私は他のテーブルでこの問題はありません。私は何が欠けていますか?

例外:System.InvalidProgramException - "Common Language Runtimeが無効なプログラムを検出しました。"

スタックトレース:

at System.Data.Entity.DynamicProxies.users_to_roles_026CF8D248576FA69379B3C621F372FAF9B6F2E4794C8490AE27BABE54609FF1.set_id(Decimal) 
     at lambda_method(Closure , Shaper) 
     at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) 
     at lambda_method(Closure , Shaper) 
     at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) 
     at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext() 
     at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) 
     at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source) 
     at Users.Lib.DAOs.Mysql.MysqlUserDAO.RemoveRoleFromUser(String email, String roleName) in C:\Work\Users.Lib\DAOs\Mysql\MysqlUserDAO.cs:line 242  

編集

ソリューション、以下@Quintinに感謝します。私のエンティティの 'id'列は、Int64ではなく小数点にマッピングされていました。どのようにこのようになったのか分かりませんが、問題は解決しました!私はあなたがEFのバグに遭遇したと仮定し

+0

は例外に関する詳細な情報を投稿してください、特にそののInnerExceptionは – Polity

+0

残念ながら、内部例外はnullです。上記のスタックトレースを参照してください。 – daviddeath

+0

それは、来るのを見たことがありませんでした、例外自体は何ですか? – Polity

答えて

1
+0

おそらく関連しています。元の問題は、長整数から小数への誤ったマッピングが原因です。しかし、私がlongからintにマップすると(私のキーはまだ十分ではありません)、例外はありません。したがって、主キー/小数の組み合わせに直接関係しているようです。 – daviddeath

関連する問題