在自动生成实体中添加属性的最佳方法是什么(使用VS2010和EF4)
-
30-09-2019 - |
题
ASP.NET MVC2对使用实体的属性(验证和扩展HTML助手类等)有强烈的支持。
如果我使用VS2010 EF4 Entity数据模型(EDMX和IT是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持续和处理,那么“数据库中的更新模型”选项是您最好的朋友。
不隶属于 StackOverflow