实体和MVC的混合实现

本文关键字:混合 实现 MVC 实体 | 更新日期: 2023-09-27 18:27:24

使用Microsoft实体框架和MVC,我有以下需求,实现一个实体,其中一些属性属于sql server DB中的表,而其他属性则从同一表上的XML列加载,我想创建属性,以便将存储在XML中的一些值公开给MVC视图和控制器。

假设我有实体"笔记本电脑",从一个类似于表的处理器和ram加载列;为了灵活起见,该表有一个包含更多数据的XML列,我想使用"Laptop"实体的属性公开XML中的一些值,如dvd、蓝牙、usb等。

我尝试使用一个名为"Laptop"的分部类,试图声明和添加用于维护附加属性的例程,但这不起作用,在这个分部类中声明的附加属性在MVC等上层的"Lapto"实体上不可见。

我的问题与如何从XML中提取值无关,更多地依赖于如何将实体与自定义属性相结合,实体是自动创建的,更新模型,我需要一种在其他地方定义其他属性的方法,而不是在设计时由IDE自动删除,因此我的第一个想法是分部类。

有什么想法吗?

实体和MVC的混合实现

您将需要某种类型的dynamic对象,因此请尝试ExpandoObject类。您可能需要将ExpandoObject与LINQ表达式树结合使用,以获取XML列中的数据,并将其转换为fieldnamefieldvalue数组或其他动态对象。

下面是一个可能适合您的用例的示例: