Хорошо, так что я думаю, что у меня есть ответ.
Все, что мне нужно было сделать, это изменить мою IDataEntity следующим образом:
открытый интерфейс IDataEntity
{
int Id {get; }
}
Я бы попробовал это изначально с get и set, но тогда у меня возникли бы проблемы, потому что мой абстрактный класс использовал защищенный набор и не мог наследовать от интерфейса. Похоже, что пока не работает сеттер из интерфейса, надеюсь, он не вызовет каких-либо других проблем.