モデル駆動型の設計アプローチで、Visual Studio 2010 RTM と .NET/Entity Framework 4 RTM を使用しています。DateTimeOffset フィールドを持つエンティティを作成すると、EF モデラーは DateTimeOffset を SQL datetimeoffset ではなく SQL datetime にマップしようとします。SQL Server 2008 Express を使用しているため、データベースで datetimeoffset がサポートされています。
Visual Studio で次のエラーが発生します。
エラー 2019: 指定されたメンバー マッピングが無効です。タイプ 'Data.SqlStorage.MyType' のメンバー 'Created' のタイプ 'Edm.DateTimeOffset[Nullable=False,DefaultValue=,Precision=]' は 'SqlServer.datetime[Nullable=False,DefaultValue=,Precision=] と互換性がありませんタイプ 'Data.SqlStorage.Store.MyTypes' のメンバー 'Created' の 3]'
EDMX StorageModels xml セクションでタイプを直接編集すると、次のエラーが発生します。
エラー 40: タイプ datetimeoffset がネームスペースまたはエイリアスで修飾されていません。修飾なしで使用できるのは PrimitiveTypes のみです。
モデラーがこれを SQL の datetimeoffset 型に正しくマップしないのはなぜですか? この問題は、Visual Studio 2010 および .NET Framework 4 のベータ版をまだ使用していたときにも発生しました。