博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OEA体验 :元数据编写
阅读量:6376 次
发布时间:2019-06-23

本文共 5089 字,大约阅读时间需要 16 分钟。

一、摘要

       我下面写的是我在使用OEA中用到的功能,当然还有好多现在还没有用到,以后我会慢慢完善这篇文章。

OEA 源码: 可以到周哥的博客中可以下到。

二、本文大纲

       a、摘要。

       b、配置数据库。

       c、元数据结构。

       d、元数据事件。

       e、界面配置。

       f、数据编辑。

       j、编辑器。

三、配置数据库:

配置文件

1:  
2:        
3:        
4:        
5:      
6:

实现代码

1:  [Serializable]
2:     public abstract class DemoEntity : Entity
3:     {
4:         public static readonly string ConnectionString = "Demo";
5:   
6:         protected override string ConnectionStringSettingName
7:         {
8:             get { return ConnectionString; }
9:         }
10:     }
11:   
四、元数据结构:

这里的代码以后都是自动生成了。

1:  public static readonly Property
CcGongredayProperty = P
.Register(e => e.CcGongreday);
2:         publicint CcGongreday
3:         {
4:             get { return this.GetProperty(CcGongredayProperty); }
5:             set { this.SetProperty(CcGongredayProperty, value); }
6:         }
7:   

数据库会跟着换类型的,除非里面的数据不能转换为目标类型。

但是界面跟数据库是没什么关系的,主要还是跟实体类有关系。

实体类是日期型的,界面应该是日期型控件。

五、元数据事件:

在这里要实现的效果是

当用户选择供热结束时间自动计算供热天数,代码如下:

1:  publicstaticreadonly ManagedProperty
CcGongreendProperty = P
.Register(e => e.CcGongreend, new PropertyMetadata
2:          {
3:              PropertyChangedCallBack = (o, e) => (o as Chargeannual).OnCcGongreendChanged(e),
4:          });
5:  protected virtual void OnCcGongreendChanged(ManagedPropertyChangedEventArgs
e)
6:          {
7:   
8:              //  在这里实现业务
9:
10:              // TimeSpan ts = CcGongreend - CcGongrebegin;
11:              // this.CcGongreday = ts.Days;
12:          }
13:   
六、界面配置:

要实现界面属性自动管理,需要编写如下代码:

 

 

 

1:  internal class ChargeannualConfig : EntityConfig
2:  {
3:      protected override void ConfigMeta()
4:      {
5:          base.ConfigMeta();
6:          Meta.MapTable().HasColumns(
7:          Chargeannual.CcYearProperty,
8:          Chargeannual.CcSwitchProperty,
9:          Chargeannual.CcGongrebeginProperty,
10:          Chargeannual.CcGongreendProperty,
11:          Chargeannual.CcGongredayProperty,
12:          Chargeannual.CcDnabeginProperty,
13:          Chargeannual.CcDnaproportionProperty,
14:          Chargeannual.CcStopportionProperty,
15:          Chargeannual.CcFixedportionProperty,
16:          Chargeannual.CcGongjianProperty,
17:          Chargeannual.CcResidentProperty,
18:          Chargeannual.CcDishangProperty,
19:          Chargeannual.CcGongjian1Property,
20:          Chargeannual.CcResident1Property,
21:          Chargeannual.CcDishang1Property,
22:          Chargeannual.CcDateProperty
23:              );
24:      }
25:  }
26:   
27:   
28:   
七、数据编辑:

要实现界面编辑,需要编写如下代码,当然你也可以直接在空格中进行编辑。

1:  internal class ChargeannualConfig : EntityConfig
2:  {
3:      protected override void ConfigView()
4:      {
5:          base.ConfigView();
6:          View.Property(Chargeannual.CcYearProperty).HasLabel("收?费?年ê度è").ShowIn(ShowInWhere.Detail);
7:          View.Property(Chargeannual.CcSwitchProperty).HasLabel("开a关?设è置?").ShowIn(ShowInWhere.Detail);
8:          View.Property(Chargeannual.CcGongrebeginProperty).HasLabel("供?热è开a始?时±间?").ShowIn(ShowInWhere.Detail);
9:          View.Property(Chargeannual.CcGongreendProperty).HasLabel("供?热è结á束?时±间?").ShowIn(ShowInWhere.Detail);
10:          View.Property(Chargeannual.CcGongredayProperty).HasLabel("供?热è天ì数y").ShowIn(ShowInWhere.Detail);
11:          View.Property(Chargeannual.CcDnabeginProperty).HasLabel("缔T纳é开a始?日?期ú").ShowIn(ShowInWhere.Detail);
12:          View.Property(Chargeannual.CcDnaproportionProperty).HasLabel("缔T纳é金e比è例y").ShowIn(ShowInWhere.Detail);
13:          View.Property(Chargeannual.CcStopportionProperty).HasLabel("停£热è基ù础?费?比è例y").ShowIn(ShowInWhere.Detail);
14:          View.Property(Chargeannual.CcFixedportionProperty).HasLabel("固ì定¨热è费?比è例y").ShowIn(ShowInWhere.Detail);
15:          View.Property(Chargeannual.CcGongjianProperty).HasLabel("公?建¨").ShowIn(ShowInWhere.Detail);
16:          View.Property(Chargeannual.CcResidentProperty).HasLabel("居ó民?").ShowIn(ShowInWhere.Detail);
17:          View.Property(Chargeannual.CcDishangProperty).HasLabel("底×商ì").ShowIn(ShowInWhere.Detail);
18:          View.Property(Chargeannual.CcGongjian1Property).HasLabel("公?建¨1").ShowIn(ShowInWhere.Detail);
19:          View.Property(Chargeannual.CcResident1Property).HasLabel("居ó民?1").ShowIn(ShowInWhere.Detail);
20:          View.Property(Chargeannual.CcDishang1Property).HasLabel("底×商ì1").ShowIn(ShowInWhere.Detail);
21:          View.Property(Chargeannual.CcDateProperty).HasLabel("CcDate").ShowIn(ShowInWhere.Detail);
22:   
23:      }
24:  }
25:   
八、编辑器:

internal class ClientinfoConfig : EntityConfig<Clientinfo> 类中的protected override void ConfigView()加入如下代码

1:  View.Property(Clientinfo.CcVillageProperty).HasLabel("街?道à小?区?").ShowIn(ShowInWhere.Detail).UseEditor(WPFEditorNames.Memo);
2:   
Clientinfo.CcVillageProperty==类.属性
在这里需要注意的是属性必须是string(字符串类型),要不然系统会报错。
目前只支持大文本编辑其它的编辑器太多了做不完,所以我们在程序级别支持开发人员自定义自己的属性编辑器。
 
其他:

ManagedPropertyChangedSource.FromProperty 是什么意思?

e.Source 表示属性被变更是哪里引起的。
FromPresistence 表示这个属性正在被数据层设置。
FromUI 表示界面。

转载地址:http://rxjqa.baihongyu.com/

你可能感兴趣的文章
[Javascript ] Array methods in depth - sort
查看>>
司机福利!Uber即将可以自己选目的地接单啦!
查看>>
pycharm的注册(转载)
查看>>
MOGODB REDIS
查看>>
HDU 1231:最大连续子序列(DP)
查看>>
[java] java 中Unsafe类学习
查看>>
js---03属性操作
查看>>
HDU 1231——最大连续子序列(DP)
查看>>
P1739 表达式括号匹配
查看>>
3.1.4 模板字符串
查看>>
redis 介绍和常用命令
查看>>
CPU的段寄存器
查看>>
linux 安装nginx
查看>>
Kettle的概念学习系列之Kettle是什么?(一)
查看>>
Qt 3D教程(二)初步显示3D的内容
查看>>
100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】
查看>>
compareTo返回值为-1 、 1 、 0 的排序问题
查看>>
Being a Good Boy in Spring Festival(杭电1850)(尼姆博弈)
查看>>
微服务间如何选择推送和拉取数据
查看>>
互联网+时代IT管理者的转型
查看>>