Вы можете создать класс, который наследуется от DataAnnotationsModelMetadataProvider
, где вы можете использовать свой набор объектов, и записать элементы как DataAnnotations
.Краткий пример:
public class MyModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
private MyEntities _db = new MyEntities();
protected override ModelMetadata CreateMetadata(
IEnumerable<Attribute> attributes,
Type containerType,
Func<object> modelAccessor,
Type modelType,
string propertyName)
{
var modelMetadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
// load object
var objectSet = _db.ObjectSets.FirstOrDefault(x => x.PropertyName == propertyName);
// check attributes
if (objectSet.IsRequired)
modelMetadata.IsRequired = true;
return modelMetadata;
}
}
Затем зарегистрируйте своего провайдера в Global.asax.cs в методе Application_Start
следующим образом:
ModelMetadataProviders.Current = new MyModelMetadataProvider();