Go to my github

OEA体验:常用功能3 多对多关系

一、摘要

       在这里主要是写OEA设计方面的知识了。OEA 源码:OEA框架 2.9 Pre-Alpha 源码公布

可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了,但是还是 需要了解框架相关知识运行机制,让我们更好的使用OEA进行开发。

二、本文大纲

       a、摘要 。

       b、UML图 (业务逻辑梳理,和父子关系的) 。

       c、项目结构,效果图  。

       d、OEA实现方法  。

三、UML图

这个图,我可是求高手求了好久才教我的 嘻嘻。

热点: 网关  设备 用户 小区

他们的关系是:

        网关下面有多个设备

        小区下面有多个用户

       用户下面有多个设备

       设备下面有多个 用户

他们的类图如下:

1b@vq@fkks1}$m$x6dhrisv

象下面这个图里面有个多对多,我们需要把它简化为这样的:这个是OEA提倡的分解关系

[gx}x70o{s`509in]0wnkfc

要用到OEA的外键,父子,界面扩展命令。

四、项目结构,效果图

  项目结构图:

     image对应的数据库结构:image

   效果图:

image

五、OEA实现方法

关联表的代码也是主代码了

image  下面的代码主要是完成这个图啦

 1: // 设备 用户 关联表
 2: [ChildEntity, Serializable]
 3: public class UDAssociation : MyEntity
 4: {
 5:  public static readonly RefProperty<Device> DeviceRefProperty =
 6:  P<UDAssociation>.RegisterRef(e => e.Device, ReferenceType.Normal);
 7:  public int DeviceId
 8:  {
 9:  get { return this.GetRefId(DeviceRefProperty); }
10:  set { this.SetRefId(DeviceRefProperty, value); }
11:  }
12:  public Device Device
13:  {
14:  get { return this.GetRefEntity(DeviceRefProperty); }
15:  set { this.SetRefEntity(DeviceRefProperty, value); }
16:  }
17:  
18:  public static readonly RefProperty<HouseHold> HouseHoldRefProperty =
19:  P<UDAssociation>.RegisterRef(e => e.HouseHold, ReferenceType.Parent);
20:  public int HouseHoldId
21:  {
22:  get { return this.GetRefId(HouseHoldRefProperty); }
23:  set { this.SetRefId(HouseHoldRefProperty, value); }
24:  }
25:  public HouseHold HouseHold
26:  {
27:  get { return this.GetRefEntity(HouseHoldRefProperty); }
28:  set { this.SetRefEntity(HouseHoldRefProperty, value); }
29:  }
30:  
31:  #region 视图属性
32:  public static readonly Property<string> View_CodeProperty = P<UDAssociation>.RegisterReadOnly(e => e.View_Code, e => (e as UDAssociation).GetView_Code(), null);
33:  public string View_Code
34:  {
35:  get { return this.GetProperty(View_CodeProperty); }
36:  }
37:  private string GetView_Code()
38:  {
39:  return this.Device.Id.ToString();
40:  }
41:  
42:  public static readonly Property<string> View_NameProperty = P<UDAssociation>.RegisterReadOnly(e => e.View_Name, e => (e as UDAssociation).GetView_Name(), null);
43:  public string View_Name
44:  {
45:  get { return this.GetProperty(View_NameProperty); }
46:  }
47:  private string GetView_Name()
48:  {
49:  return this.Device.Name;
50:  }
51:  #endregion
52: 
53:  
54: }
55:  

一个设备对应多个用户

 1: // 一个设备对应多个用户
 2: [ChildEntity, Serializable]
 3: public class UDHouseHold : MyEntity
 4: {
 5:  public static readonly RefProperty<UDAssociation> UserDeviceRefProperty =
 6:  P<UDHouseHold>.RegisterRef(e => e.UDAssociation, ReferenceType.Parent);
 7:  public int UDAssociationId
 8:  {
 9:  get { return this.GetRefId(UserDeviceRefProperty); }
10:  set { this.SetRefId(UserDeviceRefProperty, value); }
11:  }
12:  public UDAssociation UDAssociation
13:  {
14:  get { return this.GetRefEntity(UserDeviceRefProperty); }
15:  set { this.SetRefEntity(UserDeviceRefProperty, value); }
16:  }
17:  public static readonly RefProperty<HouseHold> HouseHoldRefProperty =
18:  P<UDHouseHold>.RegisterRef(e => e.HouseHold, ReferenceType.Normal);
19:  public int HouseHoldId
20:  {
21:  get { return this.GetRefId(HouseHoldRefProperty); }
22:  set { this.SetRefId(HouseHoldRefProperty, value); }
23:  }
24:  public HouseHold HouseHold
25:  {
26:  get { return this.GetRefEntity(HouseHoldRefProperty); }
27:  set { this.SetRefEntity(HouseHoldRefProperty, value); }
28:  }
29:  
30:  #region 视ó图?属?性?
31:  
32:  public static readonly Property<string> View_CodeProperty = P<UDHouseHold>.RegisterReadOnly(e => e.View_Code, e => (e as UDHouseHold).GetView_Code(), null);
33:  public string View_Code
34:  {
35:  get { return this.GetProperty(View_CodeProperty); }
36:  }
37:  private string GetView_Code()
38:  {
39:  return HouseHold.Id.ToString();
40:  }
41:  
42:  public static readonly Property<string> View_NameProperty = P<UDHouseHold>.RegisterReadOnly(e => e.View_Name, e => (e as UDHouseHold).GetView_Name(), null);
43:  public string View_Name
44:  {
45:  get { return this.GetProperty(View_NameProperty); }
46:  }
47:  private string GetView_Name()
48:  {
49:  return HouseHold.Name;
50:  }
51:  
52:  #endregion
53: }
54:  

一个用户有多个设备

 1: // 一?个?用?户§有D多à个?设è备?
 2: [ChildEntity, Serializable]
 3: public class UDDevices : MyEntity
 4: {
 5:  public static readonly RefProperty<UDAssociation> UDAssociationRefProperty =
 6:  P<UDDevices>.RegisterRef(e => e.UDAssociation, ReferenceType.Parent);
 7:  public int UDAssociationId
 8:  {
 9:  get { return this.GetRefId(UDAssociationRefProperty); }
10:  set { this.SetRefId(UDAssociationRefProperty, value); }
11:  }
12:  public UDAssociation UDAssociation
13:  {
14:  get { return this.GetRefEntity(UDAssociationRefProperty); }
15:  set { this.SetRefEntity(UDAssociationRefProperty, value); }
16:  }
17:  public static readonly RefProperty<Device> DeviceRefProperty =
18:  P<UDDevices>.RegisterRef(e => e.Device, ReferenceType.Normal);
19:  public int DeviceId
20:  {
21:  get { return this.GetRefId(DeviceRefProperty); }
22:  set { this.SetRefId(DeviceRefProperty, value); }
23:  }
24:  public Device Device
25:  {
26:  get { return this.GetRefEntity(DeviceRefProperty); }
27:  set { this.SetRefEntity(DeviceRefProperty, value); }
28:  }
29: }
30:  

啥也不说了,直接下载源码看了。

 btn_download

posted @ 2012-04-12 14:52  峡谷少爷  阅读(1422)  评论(0编辑  收藏  举报