4

ASP.NET MVC2 强烈支持在实体上使用属性(验证和扩展 Html 帮助器类等)。

如果我使用 VS2010 EF4 实体数据模型(edmx 和它的 cs 类)从数据库生成我的模型,并且我想在某些实体上添加属性。最佳做法是什么?我应该如何处理更新模型(向数据库中添加更多字段/表并将它们合并到 edmx 中) - 它会保留我的属性还是生成一个新的 cs 文件来擦除所有内容?

(手动更改此文件可能会导致您的应用程序出现意外行为。)

(如果重新生成代码,将覆盖对该文件的手动更改。)

4

3 回答 3

4

通常,您会创建所谓的部分类来扩展自动生成的对象。

向生成的类添加属性

于 2011-01-06T20:45:11.667 回答
1

通过上面链接的“伙伴类”概念和数据注释,我使用了这种扩展方法。忘记从哪里弄来的了,感谢原作者。

我们像使用它一样

 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;
    }
于 2011-01-09T02:49:13.437 回答
0

我们使用部分类,但如果您需要它们由 EF 持久化和处理,“从数据库更新模型”选项是您最好的朋友。

于 2011-01-06T20:44:46.690 回答