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