Есть два класса с зависимостью many-to-many.
public class EquipmentTemplate
{
int Id { get; set; }
string StringId { get; set; }
// other properties...
MaterialTemplate MaterialTemplates { get; set; }
ICollection<MaterialTemplate> Materials { get; set; }
}
public class MaterialTemplate
{
int Id { get; set; }
string StringId { get; set; }
// other properties...
EquipmentTemplate EquipmentTemplates { get; set; }
ICollection<EquipmentTemplate> Equipments { get; set; }
}
Нужно сделать чтобы эти классы, в базе данных в производной таблице, ссылались друг на друга не по ID, а по StringId, при том что StringId не является ключом в классе.
Пробовал через FluentApi так:
modelBuilder.Entity<MaterialTemplate>()
.HasMany(e => e.Equipments)
.WithRequired(e => e.MaterialTemplates)
.HasForeignKey(e => e.StringId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<EquipmentTemplate>()
.HasMany(e => e.Materials)
.WithRequired(e => e.EquipmentTemplates)
.HasForeignKey(e => e.StringId)
.WillCascadeOnDelete(false);
но ругается что типы ключей не совпадают:
One or more validation errors were detected during model generation: MaterialTemplate_Materials_Source_MaterialTemplate_Equipments_Target: : The types of all properties in the Dependent Role of a referential constraint must be the same as the corresponding property types in the Principal Role. The type of property 'StringId' on entity 'EquipmentTemplate' does not match the type of property 'Id' on entity 'MaterialTemplate' in the referential constraint 'MaterialTemplate_Equipments'.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости