Entity Framework Coreでクラスをメンバとして扱う方法
こんにちは、花粉に悩まされてる石川です。
備忘録程度ですがハマったことがあったので記事にします。
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に投降したものを再編集したものです。







![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)


