我正在使用实体框架,我有两个表,一个联系关系表和一个联系表。该关系是对一个联系人的许多联系人关系。
在下面的代码中,我试图获取联系人关系,然后获取相关的联系人,但是下面的代码始终为联系人返回 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);
}
但是,如果我添加一条首先进入数据库并加载联系人的行,那么联系人关系将起作用:
[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);
}
请注意,我没有使用新变量,我所做的只是确保它在数据库中。有谁知道是什么导致了这种行为?我的关系映射是:
modelBuilder.Entity<ContactRelationship>().HasOptional(x => x.Contact)
.WithMany(o => o.ContactRelationships).HasForeignKey(x => x.ContactID);
我检查过,ID 值是正确的,所有数据都存在。