はじめに
日頃からEF Coreを多用しているじゅううんです。
ちょっとハマったことがあったので備忘程度に書いておきます。
コードファーストのマイグレーションが通らない
以下のようなクラスでコードファーストマイグレーションを行おうとしました。
publicclassPerson{publicintId{get;set;}publicGeoCoordinatePosition{get;set;}}publicclassGeoCoordinate{publicdoubleLatitude{get;set;}publicdoubleLongitude{get;set;}}理想としてはこういうテーブルができてほしい
| カラム名 | 型 |
|---|---|
| Id | int |
| Position_Latitude | double |
| Position_Longitude | double |
が
>Add-MigrationinitTheentitytype'GeoCoordinate'requiresaprimarykeytobedefined.できない
なぜ
- EFがGeoCoordinateを外部キーとして認識
- テーブルを作ろうとする
[Key]属性がないので主キーが見つからないとエラーが出る
解決策
publicclassGeoCoordinate{publicdoubleLatitude{get;set;}publicdoubleLongitude{get;set;}}これを
[Owned]publicclassGeoCoordinate{publicdoubleLatitude{get;set;}publicdoubleLongitude{get;set;}}とするだけです。
できました。
おわり。
