一、摘要
我下面写的是我在使用OEA中用到的功能,当然还有好多现在还没有用到,希望高手们多多指点指点。
OEA 源码:OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel 的博客和中可以下到。
虽然作者的DEMO应经有了,但毕竟是写好的,只有自己动手才能更好的掌握这个框架,所谓体验决定深度嘛。
二、本文大纲
a、摘要 。
b、DDD 之父子关系 。
二、DDD 之父子关系
DDD思想可以查考周哥的DDD - 使用聚合(Aggregate)来设计类库文章这里就不详述了。
我们要实现的效果是:
在这里我们还是要用到 小区表 和 客户表 哦 小区表是父 客户表是子
父(RootEntity):下面的代码有 OEAPropertyChildren 生成。
1: ///<summary>
2: ///描è述? : 街?道à小?区?.
3: ///<see>类à库a对?应|的?数y据Y库a表í NT_Clcs_Village </see>
4: ///</summary>
5: [Serializable]
6: [RootEntity]
7: public class Village : DemoEntity
8: {
9:
10: public static readonly Property<ClientinfoList> ClientinfoListProperty = P<Village>.Register(e => e.ClientinfoList);
11: [Association]
12: public ClientinfoList ClientinfoList
13: {
14: get { return this.GetLazyChildren(ClientinfoListProperty); }
15: }
16: }
子(ChildEntity):下面的代码有 OEAPropertyReference 生成外键关系。
1: ///<summary>
2: ///描è述? : 客í户§信?息¢.
3: ///<see>类à库a对?应|的?数y据Y库a表í NT_Clcs_ClientInfo </see>
4: ///</summary>
5: [Serializable]
6: [ChildEntity]
7: public class Clientinfo : DemoEntity
8: {
9: public static readonly RefProperty<Village> VillageRefProperty =
10: P<Clientinfo>.RegisterRef(e => e.Village, ReferenceType.Parent);
11: public int VillageId
12: {
13: get { return this.GetRefId(VillageRefProperty); }
14: set { this.SetRefId(VillageRefProperty, value); }
15: }
16: public Village Village
17: {
18: get { return this.GetRefEntity(VillageRefProperty); }
19: set { this.SetRefEntity(VillageRefProperty, value); }
20: }
21: }
注意:
1: internal class ClientinfoConfig : EntityConfig<Clientinfo>
2: {
3: protected override void ConfigView()
4: {
5: base.ConfigView();
6:
7: View.HasLabel("客户"); // 主要要加上这个哦,要不然系统会报警的。
8: }
9:
10: }
11:
映射表:
1: internal class ClientinfoConfig : EntityConfig<Clientinfo>
2: {
3: protected override void ConfigMeta()
4: {
5: base.ConfigMeta();
6:
7: Meta.MapTable().HasColumns(
11: HouseHold.VillageRefProperty,
13: );
14: }
15: }