Мне нужно построить связь между двумя таблицами без использования свойства первичного ключа.
Вот мои модели сущностей
public class RealEstateProperty
{
public int Id { get; set; }
public string PostalCode { get; set; }
//... List of all properties
[ForeignKey(nameof(PostalCode))]
public virtual RealEstatePropertyPostalCodePriority PostalCodePriority { get; set; }
}
public class RealEstatePropertyPostalCodePriority
{
public int Id { get; set; }
// This is a unique property on the database
public string PostalCode { get; set; }
public int? Sort { get; set; }
[ForeignKey(nameof(PostalCode)), InverseProperty(nameof(RealEstateProperty.PostalCodePriority))]
public ICollection<RealEstateProperty> Properties { get; set; }
}
Приведенные выше отношения выдают следующее исключение
InvalidOperationException: The relationship from 'RealEstateProperty.PostalCodePriority' to 'RealEstatePropertyPostalCodePriority.Properties' with foreign key properties {'PostalCode' : string} cannot target the primary key {'Id' : int} because it is not compatible. Configure a principal key or a set of compatible foreign key properties for this relationship.
Конечный результат должен выглядеть примерно так
SELECT p.Id, p.PostalCode, z.Sort
FROM RealEstateProperties AS p
LEFT JOIN RealEstatePropertyPostalCodePriorities AS z ON z.PostalCode = p.PostalCode