2

最初にEntityFrameworkコードで、通常の1対多の外部キーのマッピングを作成する場合は、

HasRequired(a=>a.County)
  .WithMay(b=>b.Cities)
  .HasForeignKey(a=>a.CountCode);

代わりに1対1のマッピングを作成しようとすると、次のようになります。

HasRequired(a=>a.County)
  .WithOptional(b=>b.ConnectedCounty)
  .Map(a=>a.MapKey("CountyCode"));

この式でCountyCodeのような文字列を使用する必要があるのはなぜですか?文字列を含まず、linq式のみを含むマッピングを作成する方法はありますか?

4

1 に答える 1

2

これを使用すると、データベースで1対多の関係を定義できるようになるため、1対1の関係を定義するときにこれを使用することは想定されていないためです。EFは、依存エンティティのFKがそのPKでもある場合にのみ、実際の1対1の関係を使用します。これは、プリンシパルエンティティが複数の依存エンティティによって参照されないことを確認できる唯一の状況です(EFはデータベースの一意のキーをサポートしていないため)。

コードを使用する場合は、個別のFKを定義し、それは「機能」しますが、データベースの列に自動的に作成された一意のキーはありません。

于 2012-11-27T10:39:37.500 に答える