0
有什么办法直接从我的数据库中获取我的模型的dataanotations? 我有一个数据库与很多的数据和表,所以我从数据库生成我的模型与实体框架,所以我得到的类,但我想知道可以实体框架或一些其他ORM直接从数据库中获得性质和约束,并把他们在类作为像数据anotation [需要]或[数据类型(datatype.emailadress)]asp.net mvc的模型数据anotation mvc
有什么办法直接从我的数据库中获取我的模型的dataanotations? 我有一个数据库与很多的数据和表,所以我从数据库生成我的模型与实体框架,所以我得到的类,但我想知道可以实体框架或一些其他ORM直接从数据库中获得性质和约束,并把他们在类作为像数据anotation [需要]或[数据类型(datatype.emailadress)]asp.net mvc的模型数据anotation mvc
是。你可以继承ModelMetadataProvider类:
public class LocalizedModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType,
Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
if (containerType == null || propertyName == null)
return metadata;
// Load all metadata from your database here.
return metadata;
}
}
我创建了一个名为Griffin.MvcContrib项目,该项目几乎已经完成,并具有管理区域,您可以处理两个模型和验证消息的所有本地化(零代码)。
通过使用它你可以实现以下接口能得到您的数据库支持:
// the actual code file has detailed explanations of each method.
public interface ILocalizedStringProvider
{
string GetModelString(Type model, string propertyName);
string GetModelString(Type model, string propertyName, string metadataName);
string GetValidationString(Type attributeType);
string GetEnumString(Type enumType, string name);
}
更新
在哪里并不重要。而且,您不必在模型上使用DataAnnotation属性([Display]
属性)。我只是继承DataAnnotationsModelMetadataProvider
才能够使用这些属性。
例子:
ModelMetadataProviders.Current = new YourModelMetadataProvider();
我产生在我的解决方案在单独的项目我的模型类,所以在我的模型文件夹在mvc解决方案中,我从生成的类中添加新类和复制代码,并添加手动数据偏移。 那么你可以更具体地说我应该继承modelmetadataProvider类吗? – GoranB
阅读我的更新。 – jgauffin
你能否请在步骤2)从数据库中读取一些更多的信息和3)我从来没有做过这样的事情,所以我有点困惑,我应该创建我的ModelMetaDataProvide类? – GoranB