我长期用的是WinForm+ADO.NET,以SqlCommand+DataTable+DataGridView为伴,现在刚接触EF+MVC/MVVM+WPF,感觉与ado.net时代的套路很不同,数据不再用DataSet/DataTable承载,而是用具体的实体类和模型类承载。
我想请教的是,业务表的字段往往是不带资料的,比如订单明细表,通常只会记录产品ID,ID外键关联到产品表,产品表中才有产品名称等更多产品信息。如果说实体类Entity是对应库表中的一行的话,那订单明细实体应该长这样:
class OrderDetailEntity {
int Id;
int OrderId;
int ProductId;
}
那我在程序中显然不能只呈现这个实体,总得带上产品名称等东西,那么,我是需要专门为这个grid/view创建一个用于呈现的类吗?比如:
class OrderDetail {
int Id;
int OrderId;
int ProductId;
string ProductName;
//还是应该
Product Product; //连上面的ProductId都可以不要?
}
这个东西叫模型Model吗?需要为每个grid专门建个这样的类吗?Controller是应该返回单个这样的类还是订单明细实体+产品实体?如果是前者,是通过context.OrderDetail.Where().Include()得到带产品资料的OrderDetail吗?
如果是新增/修改操作put/post/patch,接受一个OrderDetail对象,那是要在Controller中将它转换成订单明细实体OrderDetailEntity再回写库表还是怎样?
DTO又是什么?是与模型差不多的一回事吗?
不好意思问题有点多,可能一上手就是ORM+MVC还好点,从别的套路转过来的反而觉得没以前直接,要定义那么多类。还请不吝指教,感谢!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…