I think, FirstOrDeafault is not safety in this place. According to MSDN, it is possible to adding many KnowType attributes to single class. Could you use loop?