Entity Framework Coreでクラスをメンバとして扱う方法
2020-02-26
こんにちは、花粉に悩まされてる石川です。
備忘録程度ですがハマったことがあったので記事にします。
Code First Migrationに失敗する
以下のクラスでテーブルを立てようとしました。
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.
困りました。
何が起きているのか
- GeoCoordinateを外部キーとして認識
- テーブルを作ろうとする
- GeoCoordinateに
[Key]
属性がないので主キーが見つからないとエラーが出る
PersonクラスでGeoCoordinateをナビゲーションプロパティとして認識して外部キー制約を作ろうとして失敗しているようです。(たぶん)
どうすればいいのか
GeoCoordinateクラスに属性を一つ付加するだけで解決します。
[Owned]
public class GeoCoordinate
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
できました。
おわり。
※この記事はQiitaに投降したものを再編集したものです。