私の質問は、SQL Server 2008と.NET 3.5 Entity Frameworkの間の数値型のマッピングを具体的に扱っています。SQL Server 2008とLINQの間の型マッピング
私はデータベースの設計に関してかなり厳しい規則を持つ法人のために働いています。このルールは、必要以上に大きなサイズではないテーブルについては神経症であるDBAによって強制されます。たとえば、適切な場合には、数値列をtinyintとsmallintに保ちます。
EFは(右に左、.NET型にSQL Serverの種類)などのような数値型にマップ:
tinyint型 - >バイト
SMALLINT - >Int16型
int型を - >int
bigint - >int64
私は最近読んだことがあり、.NETランタイムがInt32で動作するように最適化されていることがわかりました。 This Stackoverflowの質問は本当に誰かがそれを読むことをしたいと思う、それの勇気に入る。
EFがsmallintをInt16にマップするので、最適化の問題を乗り越えてInt32メンバ変数をコード内で使用するか、Int32での作業を可能にする他の解決方法がありますかコードを入力しても、SQL Serverでsmallint型を使用できるようになりますか?私は1つまたは2つのソリューションを私自身で考えることができますが、それらはすべて「最適化」という名前で過度のように思えます。
私はこれについてはわかりませんが、あなたのモデルのプロパティの型をin32に変更するだけで、int16の最大値より大きい値を送信しない限り、すべてがうまくいくはずです。 – ryudice
@ryudice - 残念ながら、それは動作しません...または少なくともLINQ to Entities(LINQ to SQLで動作するかもしれませんか?)。私はそれを試して、それは私に怒った。 – Jagd