Как сообщить EF Core, если объект, к которому присоединен составной ключ, не требуется?
Моя установка выглядит следующим образом (упрощенно):
public class ParentObject
{
public int Key1 { get; set; }
public int Key2 { get; set; }
public CompositeKeyObject CompositeKeyObj { get; set; }
// ...other properties
}
public class CompositeKeyObject
{
public int Key1 { get; set; }
public int Key2 { get; set; }
public int? ChildObjectId { get; set; }
public ChildObject ChildObj { get; set; }
}
public class ChildObject
{
public int ChildObjectId { get; set; }
// ... other properties
}
Метод, который у меня есть дляполучение данных работает нормально, если ParentObject
соответствует CompositeObject
.Но это не всегда так, и я пытаюсь сделать это в свободном API, как это:
modelbuilder.Entity<CompositeKeyObject).HasKey(p => new { p.Key1, p.Key2 }
modelBuilder.Entity<ParentObject>().Property(mpo => mpo.CompositeKeyObj).IsRequired(false);
Но если я сделаю это, я получу ошибку:
ParentObject.CompositeKeyObj 'имеет тип' CompositeKeyObject ', который не поддерживается текущим поставщиком базы данных.Либо измените тип свойства CLR, либо игнорируйте свойство с помощью атрибута [NotMapped] или с помощью EntityTypeBuilder.Ignore в OnModelCreating.
Как мне сказать, что нет 't всегда совпадающий CompositeKeyObject
?