枚举包装器和实体模型
我正在应用模型优先方法创建一个实体模型。我希望某些实体类具有 EnumWrapper 类型的属性 (http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake- enums-in-ef-4.aspx)。我应该怎么做才能实现这个目标?添加普通 int 类型属性是正确的方法吗?生成数据库后,将通过替换适当的枚举包装器上的 int 属性来以某种方式自定义实体对象。
I am creating an Entity model applying the Model first approach. I want that some of the entity classes have properties of the EnumWrapper type (http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx). What should I do to achieve this? Is adding plain int-type properties will be the correct approach? And after generating a database, the entity objects will be customized somehow by replacing int properties on appropriate enum wrappers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,您的实体必须包含为具体枚举包装器创建的复杂类型。每个枚举包装器将包含 int 类型的单个字段(您应该为每个包装器指定唯一的字段名称)。
本文中描述的方法仅在您手动创建 POCO 类时才有效,因为您必须直接修改枚举包装器。如果你修改 T4 模板,也许也可以使其工作。
它不能与自定义工具生成的默认实体对象代码(edmx 代码隐藏文件)一起使用,因为无法修改生成的复杂类型(每次触摸 EDMX 时它们都会被覆盖)。
No your entity must contain Complex type created for concrete enum wrapper. Each enum wrapper will contain single field of int type (you should make unique name of the field for each wrapper).
Described approach in the article works only if you create POCO classes manually because you must modify enum wrappers directly. You can also probably make it work if you modify T4 template.
It can't be used with default entity object code generated by custom tool (edmx code behind file) because there is no way to modify generated complex types (they will be overwritten each time you touch EDMX).