アルメモ

アルフレートのアレやコレやメモ

Entity Frameworkのedmxでデータベースからモデルを作ったけどクラスファイルが作られなくなった件

昨日まではできてたのに!なぜ!どうして!へるぷみー!!!

Entity Framework使ってますか!

便利だよね!

learn.microsoft.com

ぼくもデータベース使う.NETなアプリ開発はEntity Framework使ってます。

データベースからモデル作ってLinqできるのが楽

何が楽ってデータベース処理をコーディング時に解決できないSQL文字列じゃなくクラスやメンバとして扱えることよね。

あらゆるDB処理はビューやSPに放り出して呼ぶだけって発想もあるけど、プログラムの処理と絡めるとなるとあっち行ったりこっち来たり面倒なのでLinqで中に埋め込めるのが楽。

Linq自体のアレやコレやもあるけど、カツカツなパフォーマンスを求められる開発はしてないから気にしない。

遅ければスケールアップすればいいじゃない!クラウド万歳!

そんな楽しいedmx様が壊れた!

今日も楽しくVS2022で遊びましょう!

そうね、データベースからモデルを作ってデータベースをこねくり回すアプリで遊びましょう!

「データベースからモデルを更新」を選んで・・・

テーブルを全部選択して・・・

たくさんテーブル追加!

なのに!

事件が!

テーブルのクラスファイルが作られない事件

インスタンス作ろうとしてもない!

何故だ!

クラスが無いぞ!

ソリューションエクスプローラー見てもクラスファイルが無い!

何故だ!

何度作り直してもない!

どういうこと!?

ネットの海で情報を探し回る

あまりにも謎過ぎる現象だったんで調べまくったものの情報無し!

こんな大問題やはり普通にゃ起きないよねぇ。

自分の環境がぶっこわれているのかなぁ。

などなど思いつつもSNSとかなら同じく困っている人いないかなと検索しまくるも全然見つからない。

環境再構築しかないかなぁと思ったものの、英語情報ならもしかしたらと思い困った時のstack overflowを探しまくる。

stackoverflow.com

さすが世界!あった!

stackoverflow.com

結論としてはバージョン17.6のバグでした。

バージョン17.6.4で修正されたんだけど、VB.NET版のテンプレートに問題がまだ残っているらしい。

今は更に新しいバージョンが出てるんで直ってるかも?

しかしこんなすげぇバグが出るなんてなぁ。

もうちょい掘り下げ

そもそもはT4の処理にバグがあったのが原因らしい。

TextTransformation.GenerationEnvironment visibility change in VS 17.6.0 breaks DynamicTextTransformation class

それによって各所で変換できない問題が発生したと。

Create or recreate a Model does not works any more for winform .net framework solutions

そもそもT4は外に出すべきじゃなかったとかどうとかは別の話。

最初から英語情報を当たってたらすぐに原因分かっていたかも。

日本語の開発コミュニティが無くなってきているからなぁ。

Qiitaとかのブログ的なのは元気だけど掲示板的なのは減ってる感。

まとめ

VS2022バージョン17.6にはT4の処理にバグがあり、Entity FrameworkのT4変換でコケてクラスファイルが生成されない。

バージョン17.6.4で修正されたけどVB.NETのテンプレートには問題あり。その後直ってるかは追ってない。

同じような問題で悩んでいる方はバージョン17.5系に戻すか、バージョン17.6.4以降にバージョンアップしてみてください。

アイキャッチ画像はぱくたそから使わせていただきました。

www.pakutaso.com