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持续和处理,那么“数据库中的更新模型”选项是您最好的朋友。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top