発生している問題・エラーメッセージ
[OS:WIN10][VS2012]で動いていたのを [OS:WIN10][VS2019]でビルドしなおすと実行時にLINQ文でエラーが出るようになってしましました。
エラー内容「System.NotSupportedException: '型 'MClip.DBModel.m_shain' の定数値を作成できません。このコンテキストでサポートされるのはプリミティブ型または列挙型だけです。'」
対象NETEntityFrameworkは4です。
該当のソースコード
C#
1 var srr = from a in ent.f_haishahyowariate 2 join b in ent.f_haishahyo 3 on a.HaishaHyoID equals b.ID 4 join c in ent.f_haishahyodetail 5 on a.ID equals c.HaishaWariateID 6 join d in ent.m_nonyusaki 7 on c.NonyusakiID equals d.ID 8 from e in ent.m_shain.Where(x => x.ID == a.UntenshuID).DefaultIfEmpty() 9 select new 10 { 11 idSyaryo =(a.SharyoID ?? 0), 12 Date = b.HaishaDate, 13 nameSei = e.ShainName, 14 nameMei = e.ShainRyaku, 15 destination = d.Yukisaki, 16 No = (c.GyoNo ?? 0) , 17 jikanshiteiID = c.JikanShiteiID 18 }; 19 var srs =(from a in srr 20 where a.idSyaryo == intSyaryoIDTemp 21 && a.Date.Contains(this._tenkoDate.Trim()) 22 && a.No == 1 23 orderby a.No ascending, a.jikanshiteiID ascending 24 select a).ToList();
試したこと
前回の開発環境のPCは既にデータをすべて削除されているので
現在の開発環境PCにVS2012にインストールしてみたり
NUGETパッケージで現在インストール可能なうち一番古いNETEntityFramework4.1.103331をインストールしましたが結果は同じでした。
申し訳ありませんがご教授頂けるでしょうか。
DefaultIfEmpty を除いてみるとどうなりますか?
念のために言いますが、正しく動くようになるとは言っていません。どのように変わるかを聞いています。
ご回答ありがとうございます。
from e in ent.m_shain.Where(x => x.ID == a.UntenshuID).DefaultIfEmpty()
↓
from e in ent.m_shain.Where(x => x.ID == a.UntenshuID)
に変えてみましたが同じエラー文が出てきますね。。
このコードは問題の起こるコードそのものですか?
それともどこか書き換えていますか?
問題の起こるコードそのものです。
他の例外ならともかく、その例外が起こるようには見えないんですが、新しいプロジェクトを作って同じ問題の発生する最小限のコードから成る実行可能なコンソールアプリを作ってみてください。
そうすればどこに問題があるのか切り分けることができるかもしれません。
ありがとうございます。やってみます。
Linq to Entities なのか Linq to Objects なのかどっちですか?
こういう話ではないのですか? 質問のコードはそうはなってないようですが、違うものを提示しているとか?
LINQでJOIN時のエラーについて
http://bbs.wankuma.com/index.cgi?mode=al2&namber=90105&KLOG=155
↓ この記事の 2 つ目の例
Linq to Entities / Objects
http://surferonwww.info/BlogEngine/post/2019/02/13/difference-in-linq-to-entities-and-objects.aspx
Linq to Entities と Linq to Objects を混ぜた結果では?
ご回答ありがとうございます。
Linq to Entities なのか Linq to Objectsの見分け方について調べてみたところ
確認できるWEBサイトは見つけられなかったのですが
コードを見た感じLinq to Entitiesだと思います。
Linq to Entitiesについて調べてみたところ
from e in ent.m_shain.Where(x => x.ID == a.UntenshuID).DefaultIfEmpty()
がSQLに変換できていないのかもしれませんね。。
以前までいけたのに、できなくなったのは分からないですが。。
いや、そうではなくて、問題が出るコードと違うものを提示しているとしか思えないです。そこをよく確認していただけませんか?
自分の環境でですが、どのようにすると、
> System.NotSupportedException: '型 'MClip.DBModel.m_shain' の定数値を作成できません。このコンテキストでサポートされるのはプリミティブ型または列挙型だけです。
というエラーになるのかの例を回答欄に書いておきます。
ありがとうございます。お願いします。
回答1件
あなたの回答
tips
プレビュー


