OEA体验 :常用功能1
一、摘要
我下面写的是我在使用OEA中用到的功能,当然还有好多现在还没有用到,希望高手们多多指点指点。
OEA 源码: OEA框架 2.9 Pre-Alpha 源码公布 可以到 BloodyAngel 的博客中可以下到。
二、本文大纲a、摘要。
b、数据过滤。
c、托管属性。
d、支持树型实体 。
二、数据过滤数据查询是一个在平常不过的事,我们来看看OEA是怎么帮我们实现的。下面用一个简单的例子来说明,如我们要实现根据客户名称来查询,效果图如下:
要达到上面效果实现代码如下:
前台调用如下:
1: internal class ClientinfoConfig : EntityConfig <Clientinfo>2: {3: protected override void ConfigMeta()4: {5: base .ConfigMeta();6: }7: protected override void ConfigView()8: {9: base .ConfigView();10: View.UseWPFCommands( "CLCS.WPF.ClientinfoSearchCommand" );11: }12: }13:具体代码如下:
1: using OEA.WPF.Command;2: using OEA.MetaModel.Attributes;3: using OEA.Module.WPF;4: using OEA.Module.WPF.CommandAutoUI;5: using OEA.MetaModel.View;6:7: namespace CLCS.WPF8: {9: [ Command (Label = "过滤客户名称" , UIAlgorithm = typeof ( GenericItemAlgorithm < TextBoxButtonItemGenerator >))]10: public class ClientinfoSearchCommand : ListViewCommand11: {12: public override void Execute( ListObjectView view)13: {14: var txt = this .TryGetCustomParams< string >( CommandCustomParams .TextBox);// 设置查询条件15: view.Filter = e => (e as Clientinfo ).CcName.Contains(txt);16: }17: }18: }19:20:21:二、托管属性(代码生成 OEAPropertyReference )数据关联也是一个很平常的了,向下面的以前要写好多代码现在还不到10行就可以了。
在这需要用 小区表,和客户表 两个表
DemoEntity 类可以在 OEA体验 :元数据编写 中找到
下面的代码可以使用OEAPropertyReference 来生成
1: ///<summary>2: /// 描è述? : 客í户§信?息¢.3: ///<see> 类à库a对?应|的?数y据Y库a表í NT_Clcs_ClientInfo </see>4: ///</summary>5: [ Serializable ]6: [ RootEntity ]7: public class Clientinfo : DemoEntity8: {9: protected Clientinfo() { }10: public static readonly RefProperty <Village> VillageRefProperty =11: P < Clientinfo >.RegisterRef(e => e.Village, ReferenceType .Normal);12: public int VillageId13: {14: get { return this .GetRefId(VillageRefProperty); }15: set { this .SetRefId(VillageRefProperty, value ); }16: }17: public Village Village18: {19: get { return this .GetRefEntity(VillageRefProperty); }20: set { this .SetRefEntity(VillageRefProperty, value ); }21: }22: #endregion23: }24:下面的是小区表的配置类
1: internal class VillageConfig : EntityConfig < Village >2: {3: protected override void ConfigMeta()4: {5: base .ConfigMeta();6:7: Meta.MapTable().HasColumns(8: Village .ParentidProperty,9: Village .CvNameProperty,10: Village .CvPinyiProperty,11: Village .CvTypeProperty,12: Village .CvHeatingplantProperty,13: Village .CvHscuProperty,14: Village .BustypeProperty,15: Village .ClientcountProperty16: );17:18: }19: protected override void ConfigView()20: {21: base .ConfigView();22:23: View.HasTitle( Village .CvNameProperty).HasLabel( "小?区?名?称?" );24: View.Property( Village .CvNameProperty).HasLabel( "小?区?名?称?" ).ShowIn( ShowInWhere .List | ShowInWhere .Lookup);25: }自动生成数据库关联关系
三、支持树型实体(代码生成 OEATreeEntity )
向小区下面还有楼栋和单元,我们看OEA如何实现
生成的代码如下:
1: #region 支§持?树÷型í实μ体?2:3: public static readonly Property < string > TreeCodeProperty = P < Village >.Register(e => e.TreeCode);4: [ Column ]5: public override string TreeCode6: {7: get { return GetProperty(TreeCodeProperty); }8: set { SetProperty(TreeCodeProperty, value ); }9: }10:11: public static readonly Property < int ?> TreePIdProperty = P < Village >.Register(e => e.TreePId);12: [ Column ]13: public override int ? TreePId14: {15: get { return this .GetProperty(TreePIdProperty); }16: set { this .SetProperty(TreePIdProperty, value ); }17: }18:19: public override bool SupportTree { get { return true ; } }20:21: #endregion22:自动生成数据库关联关系
是不是很简单
作者:罗敏贵
邮箱:minguiluo@gmail.com
QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
出处: http://luomingui.cnblogs.com/
说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
本作品采用 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议 进行许可。
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did49438