ASP.NET MVC2 强烈支持在实体上使用属性(验证和扩展 Html 帮助器类等)。
如果我使用 VS2010 EF4 实体数据模型(edmx 和它的 cs 类)从数据库生成我的模型,并且我想在某些实体上添加属性。最佳做法是什么?我应该如何处理更新模型(向数据库中添加更多字段/表并将它们合并到 edmx 中) - 它会保留我的属性还是生成一个新的 cs 文件来擦除所有内容?
(手动更改此文件可能会导致您的应用程序出现意外行为。)
(如果重新生成代码,将覆盖对该文件的手动更改。)
ASP.NET MVC2 强烈支持在实体上使用属性(验证和扩展 Html 帮助器类等)。
如果我使用 VS2010 EF4 实体数据模型(edmx 和它的 cs 类)从数据库生成我的模型,并且我想在某些实体上添加属性。最佳做法是什么?我应该如何处理更新模型(向数据库中添加更多字段/表并将它们合并到 edmx 中) - 它会保留我的属性还是生成一个新的 cs 文件来擦除所有内容?
(手动更改此文件可能会导致您的应用程序出现意外行为。)
(如果重新生成代码,将覆盖对该文件的手动更改。)
通过上面链接的“伙伴类”概念和数据注释,我使用了这种扩展方法。忘记从哪里弄来的了,感谢原作者。
我们像使用它一样
List<ValidationResult> errorList = new List<ValidationResult>();
bool bValid = client.IsValid<Client, ClientMetadata>(ref errorList, false);
public static bool IsValid<T, U>(this T obj, ref List<ValidationResult> errors, bool validateAllProperties = true) where T : IValidatableObject
{
//If metadata class type has been passed in that's different from the class to be validated, register the association
if (typeof(T) != typeof(U))
{
TypeDescriptor.AddProviderTransparent(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(T), typeof(U)), typeof(T));
}
var validationContext = new ValidationContext(obj, null, null);
var validationResults = new List<ValidationResult>();
Validator.TryValidateObject(obj, validationContext, validationResults, validateAllProperties);
errors = validationResults;
if (validationResults.Count > 0)
return false;
else
return true;
}
我们使用部分类,但如果您需要它们由 EF 持久化和处理,“从数据库更新模型”选项是您最好的朋友。