У него гораздо больше проблем.Что произойдет, если ваша сущность содержит дополнительные несопоставленные свойства?Вы можете попросить EF дать вам имена всех сопоставленных навигационных свойств.Получить информацию из метаданных EF - это немного науки, но это возможно.Попробуйте что-то вроде этого (код ожидает, что вы используете DbContext API, но его можно легко изменить на ObjectContext API):
ObjectContext objectContext = ((IObjectContextAdapter) dbContext).ObjectContext;
MetadataWorkspace workspace = objectContext.MetadataWorkspace;
EntityContainer container =
workspace.GetEntityContainer("NameOfYourContextClass", true, DataSpace.CSpace);
EntitySet entitySet =
container.GetEntitySetByName("NameOfYourPropertyExposingDbSetOnTheContext", true);
IEnumerable<string> navigationPropertyNames =
entitySet.ElementType.NavigationProperties.Select(n => n.ToString());
Ключ предоставляет правильные имена в GetEntityContainer
и GetEntitySetByName
, и онтакже является основным отличием между первым кодом и моделью db / first.Если вы используете код первым, эти имена следуют некоторым соглашениям.Если вы используете EDMX, вы можете управлять этими именами в конструкторе.
В любом случае это автоматическое включение - это то, что вам следует избегать.Включайте только те данные, которые вам действительно нужны, и делайте это явно, чтобы всегда показывать сложность запроса .