繁体   English   中英

WPF和ASP.NET MVC的通用模型

[英]Common models for WPF and ASP.NET MVC

我将构建两个应用程序。 其中之一在WPF中,第二在ASP.MVC中。 我决定创建一个Web服务,它将成为数据库和应用程序之间的一层。 我不想在我的应用程序中使用实体模型。 我想创建轻量级模型,将其发送到Web服务,然后将其转换为实体模型。 我的问题是如何为WPF和MVC创建通用模型? 我不知道该怎么做,因为我想为MVC使用数据注释属性,并为WPF实现INotifyPropertyChanged接口。 我认为还会有其他事情。 有一些好的方法吗? 还是不可能?

嗯,首先,将实体暴露在DAL之外没有任何问题。 他们只是课程。 他们没有什么特别的。 使它们完成数据库工作的原因是它们包含在DbContext类中,并且您实际上可以使用流畅的config将所有注释和其他配置移到上下文中,并且具有原始类,而没有任何外部影响。

另外,总有一种趋势是向实体类添加过多的配置。 他们只应具有在数据库级别上重要的内容 诸如[EmailAddress]内容指示如何在发布时验证属性的方法在实体类上不合适。

也就是说,将诸如[EmailAddress]和其他特定于视图的内容放置在视图模型上。 哪个应该可以消除您其余的困惑。 需要实现INotifyPropertyChanged吗? 使用视图模型执行此操作。 并映射您的实体数据。

只是不喜欢我见过的人所做的那样,所以创建了一个DTO类,该类基本上是您的实体类的精确副本,只是将数据从应用程序中的一个地方转移到另一个地方。 那是没有用的,只会增加需要维护的其他内容以及您的应用需要执行的其他工作,而没有任何好处。 实体类是DTO。 从您的服务中将其返回,然后映射到您的视图模型。 做完了

为了澄清最后一点,与WPF / MVC应用程序相关的类应该是它们的视图模型,而这些模型对于该应用程序是唯一的。 WPF中需要什么以及如何将实体数据映射到WPF应用程序中的逻辑,或从WPF应用程序映射实体数据的逻辑。 让代码创建类实例直接在WPF应用中直接由某些本应与获取数据有关的服务创建,这将是100%不适当的。 这将违反单一责任原则。 让每件事做它打算做的事情。 换句话说,将WPF代码与WPF代码保持一致。 您仍然可以使用一些库来处理数据层和WPF视图模型之间的映射,但这应该是单独的事情,在WPF应用程序中只是一个依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM