davin

Just a little thinking and interest!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  53 随笔 :: 8 文章 :: 127 评论 :: 13万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在上一篇中我介绍了edm中继承的几种方式以及是如何在查询中去操作继承的实体群。这篇随笔将诉说继承在实际应用过程中继承带给我的的困惑与烦恼。在我们的项目中有一个PickList实体 ,从它派生出的实体不下20个,PickList作为基础的参照数据 ,对其维护(CRUD)是必须的。可是在对其做维护的过程中我发现我如何知道作为base entity (PickList)他有多少个(derived entity)派生的实体,如何取得每一个实体的类型名称...,为了简单起见还是用上篇文章的模型.在这个模型中 我也选取PickList 作为本次诉说对象.

                                                                          图1

在老大分配任务让我对 PickList做维护,我就查相关的资料。其实在平时就想过这个问题,在视图里配置EntityDataSoures时,经常看到这个场景,

                                 图2

我在想EntityataSources是怎么做到的,如何得到Picklist的derived Entity的EntityTypeName列表的。于是我用 Reflector工具看了一下system.web..Entity.dll,想从中得到些帮助。没有看到值得惊喜的东西,后来在entityDatasoureView(internal)中看到了EntityCSpaceType,SpaceFiteredEntityType这2个属性,才知道是通过MetaWorkSpace在访问的,可是想到底SpaceFiteredEntityType属性中的 IsTypeOrSubtypeOf()是怎样写的,却被打乱了.如是我开始了尝试通过访问MetaWorkSpace取得PickList的所有派生实体的EntityTypeName。 ,在msdn的帮助下很快我就得到了EntityTypeName的列表通过下面的代码

Code

 

解决了这一问题,我的页面显示如下,通过一个AspxCombo(devExpress 控件)回调进行过滤,这样编辑和删除很容易就可以做了。如果在Entitty data model中对PickList新增加一个派生,页面中的AspxCombo将新增一个派生的实体类型。这样做才是最符合实际,也体现出了良好的扩展性。

                                           图3

当然在这里我也想过其他的方式,比如说我去做一个sql视图,将数据库里的PickList表的Type类型查出来,但那种方式就必须在数据库有该种Type的数据,但是如果那样当在Entitty data model中对PickList新增加一个派生,我的维护页面就不能正确反映出来,显然这样是不可以的。但接下来真正的问题来了,如图3 我选择新增一个TypeOfRank记录,我如何在知道要创建的实体的EntityTypeName(一个变量)情况下创建一个该类型的实例呢? 似乎在EntityDataSource里面也就EntityTypeFilter是一个类似的场景的应用,可是知道这些,有什么用呢!在MSDN  forums 也提问了,没有收到帮助。没办法,只能做一个EntityTypeName匹配选择了,可是这样就显得很呆了。希望有人给些好的建议,我该如何去处理新增的问题!

posted on   davin  阅读(3808)  评论(6编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示