【问题标题】:Entity Framework Enum in Controller控制器中的实体框架枚举
【发布时间】:2013-03-13 00:11:58
【问题描述】:
我在域模型中有一个枚举:
public enum MessageType
{
Ad = 1,
Ask = 2
}
我使用 DTO 将数据从服务层传输到 UI 层。
在控制器中,我需要从服务层获取某种类型的所有消息:
_messageService.GetAllAds(MessageType.Ad);
由于域模型未映射到 UI,我如何将其传递给 UI?
谢谢
【问题讨论】:
标签:
c#
asp.net-mvc
entity-framework
enums
【解决方案1】:
不久前,我在我的一个项目中遇到了这个问题。我最终将枚举复制到 UI 层,并且基本上有两个(几乎)相同的枚举(名称略有不同以区分它们)。本质上,它就像枚举的视图模型。
这不是一个很好的解决方案,如果我想出更好的东西,我可能会在以后重构我的项目,但它确实有效。这样做的一个好处是,您可以使用与 UI 相关的属性来装饰您的 UI 层枚举,这些属性在域层中根本没有意义。
【解决方案2】:
你需要在你的控制器和服务之间提供一些共同的东西..无论是你当前使用的MessageType枚举还是其他东西..也许你想在那里传递一个string,但是我不会推荐它。就我个人而言,我也不希望让控制器直接访问任何域实体(我使用视图模型代替),但对于枚举,我例外。
我的建议:允许控制器仍然使用该枚举。