Есть два класса с зависимостью 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'.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужна встраиваемая база данных для хранения ~30 миллионов записей с достаточно быстрым поиском по нимКакие существуют и какие можно использовать?