C# 带有验证的动态视图模型

C# 带有验证的动态视图模型,c#,asp.net,asp.net-mvc,asp.net-mvc-3,dynamic,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Dynamic,所以我有一个数据库,里面的产品都有属性,这些属性都有值。我需要能够将其重新创建为一个C#对象,并将其用作视图模型 因此,基本上我需要能够将数据库中的内容转换为: public class Product { public object Attribute { get; set; } } 我猜我将不得不使用反射树或表达式树,但我不确定。我还需要对每个属性进行验证。我正在考虑使用一个名为的框架来实现这一点,尽管我不知道是否能够获得验证和/或能够将此视图模型发回控制器 有什么想法吗 编辑:谢

所以我有一个数据库,里面的产品都有属性,这些属性都有值。我需要能够将其重新创建为一个C#对象,并将其用作视图模型

因此,基本上我需要能够将数据库中的内容转换为:

public class Product
{
    public object Attribute { get; set; }
}
我猜我将不得不使用反射树或表达式树,但我不确定。我还需要对每个属性进行验证。我正在考虑使用一个名为的框架来实现这一点,尽管我不知道是否能够获得验证和/或能够将此视图模型发回控制器

有什么想法吗


编辑:谢谢大家的回答,但我一定没有说清楚我在找什么错。。我正在研究使用DynamicObject从数据库中的数据创建一个对象。我只是不确定如何使用DynamicObject在运行时也创建数据批注。

如果您使用的是MVC3,那么我看到的典型方法就是使用实体框架和不引人注目的Javascript/DataAnnotation进行验证

辅导


教程

如果您使用的是MVC3,那么我看到的典型方法是使用实体框架和不引人注目的Javascript/DataAnnotation进行验证

辅导

教程

Ryan

根据LiquidPony的评论,我将把实体框架拉到混合中。使用EF有多种入口点,可以是数据库优先、模型优先或代码优先。出于您的目的,数据库优先是最合适的。基本上,您只需将edmx设计器画布指向db连接,然后将所需的表“拖动”到曲面上。然后,这将创建所需的实体类,这些实体类可以在使用linq的服务层/控制器中使用

这里的美妙之处在于,您所有的外键关系都得到了正确的表示,您可以相对轻松地访问子集合等

在EF之前,我确实使用T4模板和反射来输出我的db映射类,虽然这是一个“成功”,但这也是一个持续的维护噩梦,因为如果db发生变化,我必须记住添加新属性。使用EF,您只需按“刷新”,这一切都为您完成。现在,如果这是一个绿地项目,您可以“更好”一步,首先使用EF代码。这允许您手动创建域模型,并根据模型的需求生成db。这在创建作为更大系统的一部分而设计的自包含组件方面具有真正的优势

见:

以及:

每种方法都有很好的总结

希望这能给你一些启示。

Ryan

根据LiquidPony的评论,我将把实体框架拉到混合中。使用EF有多种入口点,可以是数据库优先、模型优先或代码优先。出于您的目的,数据库优先是最合适的。基本上,您只需将edmx设计器画布指向db连接,然后将所需的表“拖动”到曲面上。然后,这将创建所需的实体类,这些实体类可以在使用linq的服务层/控制器中使用

这里的美妙之处在于,您所有的外键关系都得到了正确的表示,您可以相对轻松地访问子集合等

在EF之前,我确实使用T4模板和反射来输出我的db映射类,虽然这是一个“成功”,但这也是一个持续的维护噩梦,因为如果db发生变化,我必须记住添加新属性。使用EF,您只需按“刷新”,这一切都为您完成。现在,如果这是一个绿地项目,您可以“更好”一步,首先使用EF代码。这允许您手动创建域模型,并根据模型的需求生成db。这在创建作为更大系统的一部分而设计的自包含组件方面具有真正的优势

见:

以及:

每种方法都有很好的总结

希望这能给我们一些启示