0

エンティティフレームワークを介してデータを取得しようとすると、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-「共通言語ランタイムが無効なプログラムを検出しました。」

スタックトレース:

 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ではなく小数にマップされていました。どうやってこのようになったのかわかりませんが、問題は解決しました!

4