DataKeyProperty вообще не используется службами данных WCF, он не связан (обратите внимание, что он находится в другом пространстве имен).
DataServiceEntity используется только в клиентской библиотеке служб данных WCF.Любой класс с этим атрибутом будет считаться типом сущности.Это может быть полезно, если вы хотите материализовать результаты запроса в класс на стороне клиента, у которого нет ключевых свойств.
DataServiceKey используется как клиентскими, так и серверными библиотеками.Указывает имена ключевых свойств.Любой класс с этим атрибутом считается типом сущности.Это атрибут, который используется все время.Он также генерируется генератором кода в VS и инструментом командной строки.
Короче говоря, если вы определяете класс, который должен представлять сущность (независимо от того, находится ли он на сервере или клиенте), вы должны добавитьатрибут DataServiceKey и перечислите все ключевые свойства в конструкторе атрибута.
(Можно определить классы как сущности без атрибута, но тогда среда выполнения использует эвристику для распознавания классов сущностей, так что если вы действительно ненужно 100% POCO, лучше использовать атрибут.)