Я бы исследовал несколько вариантов.
1) Если данные не часто меняются, можете ли вы сделать AnimalType Enum вместо объекта Entity?
2) Создайте объект типа Herbivore AnimalType, используя animalTypeRepository.FindByType("Herbivore")
, и передайте этот объект вашему новому животному.
3) Переместите указанную выше логику в метод animalRepository.SaveOrUpdate(animal)
, чтобы у вас было ...
public class AnimalRepository
{
public void SaveOrUpdate(Animal animal)
{
var animalType = animal.Type;
if (animalType.ID == 0)
{
animal.Type = animalTypeRepository.Find(animalType.Type);
}
// save or update animal...
}
}