S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

EntityFrameworkと照合順序

大文字やら小文字やら全角やら半角やら。
EntityFrameworkで、こんなExceptionが。
主キーで、大文字やら小文字やら全角やら半角やら”のみ異なる文字列”(例:”AbC"→"ABc")に変更された場合で、これってObjectに対するUpdateがうまく行ってないってことか???

System.InvalidOperationException: ObjectStateManager に、型 'Hoge.Fuga.XxxEntity' のオブジェクトへの参照を持つ ObjectStateEntry が含まれていません。

アプリでInsertかUpdateか検知する箇所をすり抜けてるみたいで、案の定Japanese_CS_AS_KS_WSにすると、ちゃんと主キー(オブジェクト)が違うよって検知してる。


SQL Server 照合順序の意味 | tk-engineering.com Technical blog
普通はJapanese_CS_AS_KS_WSじゃねんかな?ってことで。
"Japanese_"以降のモードは以下の通り。

1文字目

I Insensitive(識別しない)
S Sensitive(識別する)

2文字目

C Case(大文字小文字) "a"と"A"
A Accesnt(アクセント記号) "a"と"á"
K Kana(ひらがなとカタカナ) "あ"と"ア"
W Width(文字列幅) "6"と"6"

照合順序の設定

DBMS本体、データベース、(テーブルも?)、カラム、とあって、最終的にテーブルというかカラムを作成した時の照合順序になってるので、途中でDBMS本体やデータベースのレベルで設定を変更してもダメっぽい。
カラムの設定も変更できないし。。。なんか方法があるんじゃろか?
結局照合順序を変更して、テーブルの再作成するって感じにせんといかんのかな。