Entity Frameworkを使用していますが、連絡先関係テーブルと連絡先テーブルの2つのテーブルがあります。関係は、1つの連絡先に対する多くの連絡先関係です。
以下のコードでは、連絡先の関係を取得してから関連する連絡先を取得しようとしていますが、以下のコードは常に連絡先に対してnullを返します。
[Test]
public void Mapping_ContactRelationshipsToContacts()
{
//Assign
Guid id = new Guid("118a0d24-cf9d-e111-802d-005056b4000d");
//Act
var result = _db.ContactRelationships.Where(x => x.Id == id).FirstOrDefault().Contact;
//Assert
Assert.IsNotNull(result);
}
ただし、最初にDBに移動して連絡先をロードする行を追加すると、連絡先の関係は機能します。
[Test]
public void Mapping_ContactRelationshipsToContacts()
{
//Assign
Guid id = new Guid("118a0d24-cf9d-e111-802d-005056b4000d");
//Act
var notUsed = _db.Contacts.Where(x => x.Id == new Guid("B2A2AB8C-238E-E111-8BF0-005056B4000D")).FirstOrDefault();
var result = _db.ContactRelationships.Where(x => x.Id == id).FirstOrDefault().Contact;
//Assert
Assert.IsNotNull(result);
}
新しい変数を使用していないことに注意してください。私が行っているのは、それがDBにあることを確認することだけです。誰もがこの振る舞いの原因を知っていますか?関係のマッピングは次のとおりです。
modelBuilder.Entity<ContactRelationship>().HasOptional(x => x.Contact)
.WithMany(o => o.ContactRelationships).HasForeignKey(x => x.ContactID);
チェックしましたが、ID値が正しく、すべてのデータが存在します。