Получить ModelMetadata для класса в.NET Core

В Entity Framework 6 я мог получить ModelMetadata для класса (myModel) следующим образом:

var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, myModel.GetType());

Как я могу сделать то же самое в.net core 1.1.1?

1 ответ

В ASP.NET Core 3.0 есть EmptyModelMetadataProvider класс, который реализует DefaultModelMetadataProvider который реализует ModelMetadataProviderчто абстрактно. Мы можем просто создать экземплярEmptyModelMetadataProvider и позвони GetMetadataForType(typeof(MyModel))и он вернет необходимые метаданные. В частности, я использую этот ответ для тестирования привязки пользовательской модели.

ModelMetadataProvider - это функция ASP.NET, которая не имеет ничего общего с Entity Framework. В ASP.NET Core вы можете легко ввести значение по умолчанию IModelMetadataProvider Реализация с использованием встроенного DI:

public FooController(IModelMetadataProvider provider) 
{
    var metadata = provider.GetMetadataForType(typeof(model));
}
Другие вопросы по тегам