<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_罗敏贵</title><subtitle type="text">每天学习一点点，每天进步一点点。</subtitle><id>http://feed.cnblogs.com/blog/u/54064/rss</id><updated>2012-05-30T05:53:20Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/54064/rss"/><entry><id>http://www.cnblogs.com/luomingui/archive/2012/05/30/2526143.html</id><title type="text">OEA框架学习：使用动软代码生成器</title><summary type="text">一、摘要 没事玩玩，哈。有感兴趣的可以去玩玩。 二、本文大纲 a、摘要 。 b、动软介绍 。 c、动软模板 。 三、动软介绍 大家直接去看官网就可以了哈，地址了，在这呢。http://www.maticsoft.com/default.htm 这里就不细说了吧。 四、动软模板 OEA实体模板。 1: &lt;#@ template language="c#" HostSpecific="True" #&gt; 2: &lt;#@ output extension= ".cs...</summary><published>2012-05-30T05:37:00Z</published><updated>2012-05-30T05:37:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/05/30/2526143.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/05/30/2526143.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 没事玩玩，哈。有感兴趣的可以去玩玩。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要&amp;nbsp; 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、动软介绍 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、动软模板&amp;nbsp; 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、动软介绍&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp; &lt;/p&gt;    &lt;p&gt; 大家直接去看官网就可以了哈，地址了，在这呢。&lt;a title="http://www.maticsoft.com/default.htm" href="http://www.maticsoft.com/default.htm"&gt;http://www.maticsoft.com/default.htm&lt;/a&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205301336257701.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205301336304141.png" width="644" height="424" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp; 这里就不细说了吧。 &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;四、动软模板&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OEA实体模板。&lt;/p&gt;    &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;#@ template &lt;/span&gt;&lt;span style="color: red"&gt;language&lt;/span&gt;&lt;span style="color: blue"&gt;="c#" &lt;/span&gt;&lt;span style="color: red"&gt;HostSpecific&lt;/span&gt;&lt;span style="color: blue"&gt;="True" &lt;/span&gt;&lt;span style="color: #8b008b"&gt;#&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;#@ output &lt;/span&gt;&lt;span style="color: red"&gt;extension&lt;/span&gt;&lt;span style="color: blue"&gt;= ".cs" &lt;/span&gt;&lt;span style="color: #8b008b"&gt;#&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;#&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;    TableHost &lt;/span&gt;&lt;span style="color: red"&gt;host &lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;(TableHost)(Host);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;    host.Fieldlist.Sort(CodeCommon.CompareByintOrder);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;#&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&lt;/span&gt;&lt;span style="color: black"&gt;using System;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;&lt;span style="color: black"&gt;using System.Collections.Generic;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&lt;span style="color: black"&gt;using System.Linq;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;&lt;span style="color: black"&gt;using System.Text;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&lt;span style="color: black"&gt;using OEA.Library;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;&lt;span style="color: black"&gt;using OEA.MetaModel;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;&lt;span style="color: black"&gt;using OEA.MetaModel.Attributes;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;&lt;span style="color: black"&gt;using OEA.MetaModel.View;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;&lt;span style="color: black"&gt;namespace  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.NameSpace #&amp;gt; &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&lt;/span&gt;&lt;span style="color: black"&gt;{&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;&lt;span style="color: black"&gt;    &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;# if( host.TableDescription.Length &amp;gt; &lt;/span&gt;&lt;span style="color: #00008b"&gt;0&lt;/span&gt;&lt;span style="color: black"&gt;) {#&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;&lt;span style="color: black"&gt;    //&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.TableDescription #&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;    &amp;lt;# } #&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;    &lt;/span&gt;&lt;span style="color: black"&gt;[RootEntity, Serializable]&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;&lt;span style="color: black"&gt;    public class &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt; &lt;/span&gt;&lt;span style="color: black"&gt;: MyEntity&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;&lt;span style="color: black"&gt;       &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;# foreach (ColumnInfo c in host.Fieldlist)&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        { #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;/// &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;summary&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;/// &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;string.IsNullOrEmpty(c.Description)  ? c.ColumnName : c.Description #&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;/// &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: red"&gt;summary&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;gt;        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;public static readonly Property&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;lt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;CodeCommon.DbTypeToCS(c.TypeName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;&amp;gt; &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Property = P&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;lt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;&amp;gt;.Register(e =&amp;gt; e.&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;29:  &lt;/span&gt;&lt;span style="color: black"&gt;        public &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;CodeCommon.DbTypeToCS(c.TypeName) #&amp;gt; &amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;30:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;{&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;31:  &lt;/span&gt;&lt;span style="color: black"&gt;            get { return this.GetProperty(&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Property); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;32:  &lt;/span&gt;&lt;span style="color: black"&gt;            set { this.SetProperty(&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Property, value); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;33:  &lt;/span&gt;&lt;span style="color: black"&gt;        }        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;34:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;# } #&amp;gt; &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;35:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;    &lt;/span&gt;&lt;span style="color: black"&gt;}&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;36:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;37:  &lt;/span&gt;&lt;span style="color: black"&gt;    [Serializable]&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;38:  &lt;/span&gt;&lt;span style="color: black"&gt;    public class &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;List : MyEntityList&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;39:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;40:  &lt;/span&gt;&lt;span style="color: black"&gt;        public &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;List()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;41:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;42:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;43:  &lt;/span&gt;&lt;span style="color: black"&gt;        }     &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;44:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;45:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;46:  &lt;/span&gt;&lt;span style="color: black"&gt;    public class &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Repository : EntityRepository&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;47:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;48:  &lt;/span&gt;&lt;span style="color: black"&gt;        protected &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Repository() { }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;49:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;50:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;51:  &lt;/span&gt;&lt;span style="color: black"&gt;    internal class &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Config : EntityConfig&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;lt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;52:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;53:  &lt;/span&gt;&lt;span style="color: black"&gt;        protected override void ConfigMeta()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;54:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;55:  &lt;/span&gt;&lt;span style="color: black"&gt;            base.ConfigMeta();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;56:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;57:  &lt;/span&gt;&lt;span style="color: black"&gt;            Meta.MapAllPropertiesToTable();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;58:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;59:  &lt;/span&gt;&lt;span style="color: black"&gt;            //基础数据启用分布式缓存&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;60:  &lt;/span&gt;&lt;span style="color: black"&gt;            //Meta.EnableCache();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;61:  &lt;/span&gt;&lt;span style="color: black"&gt;        }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;62:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;63:  &lt;/span&gt;&lt;span style="color: black"&gt;        protected override void ConfigView()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;64:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;65:  &lt;/span&gt;&lt;span style="color: black"&gt;            base.ConfigView();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;66:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;# foreach (ColumnInfo c in host.Fieldlist)&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;67:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        { #&amp;gt; &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;68:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;View.Property(&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;host.GetModelClass(host.TableName) #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;c.ColumnName #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;Property).HasLabel("&lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red"&gt;#&lt;/span&gt;&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: #8b008b"&gt;string.IsNullOrEmpty(c.Description)  ? c.ColumnName : c.Description #&amp;gt;&lt;/span&gt;&lt;span style="color: black"&gt;").ShowIn(ShowInWhere.All);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;69:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: #8b008b"&gt;&amp;lt;# } #&amp;gt; &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;70:  &lt;/span&gt;&lt;span style="color: #8b008b"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;}&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;71:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;72:  &lt;/span&gt;&lt;span style="color: black"&gt;}&lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;直接把上面的代码保存 *.cmt 格式的文件就可以了。&lt;/p&gt;  &lt;p&gt;生成出来的效果是：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  1:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;System;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  2:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;System.Collections.Generic;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  3:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;System.Linq;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  4:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;System.Text;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  5:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;OEA.Library;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  6:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;OEA.MetaModel;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  7:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;OEA.MetaModel.Attributes;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  8:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;&lt;span style="color: black"&gt;OEA.MetaModel.View;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  9:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 10:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;namespace  &lt;/span&gt;&lt;span style="color: black"&gt;Maticsoft &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 11:  &lt;/span&gt;&lt;span style="color: black"&gt;{&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 12:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: green"&gt;//HeatingType&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 13:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;[RootEntity, Serializable]&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 14:  &lt;/span&gt;&lt;span style="color: black"&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: black"&gt;HeatingType : MyEntity&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 15:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 16:  &lt;/span&gt;&lt;span style="color: black"&gt;       &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 17:  &lt;/span&gt;&lt;span style="color: gray"&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;id&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 18:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 19:  &lt;/span&gt;&lt;span style="color: gray"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: brown"&gt;static readonly &lt;/span&gt;&lt;span style="color: black"&gt;Property&amp;lt;&lt;/span&gt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&lt;span style="color: black"&gt;&amp;gt; idProperty = P&amp;lt;HeatingType&amp;gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;Register&lt;/span&gt;&lt;span style="color: black"&gt;(e =&amp;gt; e.id);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 20:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public int &lt;/span&gt;&lt;span style="color: black"&gt;id&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 21:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 22:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;get &lt;/span&gt;&lt;span style="color: black"&gt;{ &lt;/span&gt;&lt;span style="color: blue"&gt;return this&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;GetProperty&lt;/span&gt;&lt;span style="color: black"&gt;(idProperty); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 23:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;&lt;span style="color: black"&gt;{ &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;SetProperty&lt;/span&gt;&lt;span style="color: black"&gt;(idProperty, &lt;/span&gt;&lt;span style="color: blue"&gt;value&lt;/span&gt;&lt;span style="color: black"&gt;); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 24:  &lt;/span&gt;&lt;span style="color: black"&gt;        }        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 25:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 26:  &lt;/span&gt;&lt;span style="color: gray"&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;ht_Name&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 27:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 28:  &lt;/span&gt;&lt;span style="color: gray"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: brown"&gt;static readonly &lt;/span&gt;&lt;span style="color: black"&gt;Property&amp;lt;&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="color: black"&gt;&amp;gt; ht_NameProperty = P&amp;lt;HeatingType&amp;gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;Register&lt;/span&gt;&lt;span style="color: black"&gt;(e =&amp;gt; e.ht_Name);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 29:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public string &lt;/span&gt;&lt;span style="color: black"&gt;ht_Name&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 30:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 31:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;get &lt;/span&gt;&lt;span style="color: black"&gt;{ &lt;/span&gt;&lt;span style="color: blue"&gt;return this&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;GetProperty&lt;/span&gt;&lt;span style="color: black"&gt;(ht_NameProperty); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 32:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;&lt;span style="color: black"&gt;{ &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;SetProperty&lt;/span&gt;&lt;span style="color: black"&gt;(ht_NameProperty, &lt;/span&gt;&lt;span style="color: blue"&gt;value&lt;/span&gt;&lt;span style="color: black"&gt;); }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 33:  &lt;/span&gt;&lt;span style="color: black"&gt;        }        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;134:  &lt;/span&gt;&lt;span style="color: black"&gt;     }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;135:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;136:  &lt;/span&gt;&lt;span style="color: black"&gt;    [Serializable]&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;137:  &lt;/span&gt;&lt;span style="color: black"&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: black"&gt;HeatingType List : MyEntityList&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;138:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;139:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #191970"&gt;HeatingTypeList&lt;/span&gt;&lt;span style="color: black"&gt;()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;140:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;141:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;142:  &lt;/span&gt;&lt;span style="color: black"&gt;        }     &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;143:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;144:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;145:  &lt;/span&gt;&lt;span style="color: black"&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: black"&gt;HeatingType Repository : EntityRepository&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;146:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;147:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: #191970"&gt;HeatingTypeRepository&lt;/span&gt;&lt;span style="color: black"&gt;() { }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;148:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;149:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;150:  &lt;/span&gt;&lt;span style="color: black"&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: black"&gt;HeatingTypeConfig : EntityConfig&amp;lt;HeatingType&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;151:  &lt;/span&gt;&lt;span style="color: black"&gt;    {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;152:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: brown"&gt;override &lt;/span&gt;&lt;span style="color: blue"&gt;void &lt;/span&gt;&lt;span style="color: #191970"&gt;ConfigMeta&lt;/span&gt;&lt;span style="color: black"&gt;()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;153:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;154:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;base&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;ConfigMeta&lt;/span&gt;&lt;span style="color: black"&gt;();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;155:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;156:  &lt;/span&gt;&lt;span style="color: black"&gt;            Meta.&lt;/span&gt;&lt;span style="color: #191970"&gt;MapAllPropertiesToTable&lt;/span&gt;&lt;span style="color: black"&gt;();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;157:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;158:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;//基础数据启用分布式缓存&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;159:  &lt;/span&gt;&lt;span style="color: green"&gt;            //Meta.EnableCache();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;160:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: black"&gt;}&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;161:  &lt;/span&gt;&lt;span style="color: black"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;162:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: brown"&gt;override &lt;/span&gt;&lt;span style="color: blue"&gt;void &lt;/span&gt;&lt;span style="color: #191970"&gt;ConfigView&lt;/span&gt;&lt;span style="color: black"&gt;()&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;163:  &lt;/span&gt;&lt;span style="color: black"&gt;        {&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;164:  &lt;/span&gt;&lt;span style="color: black"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;base&lt;/span&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;span style="color: #191970"&gt;ConfigView&lt;/span&gt;&lt;span style="color: black"&gt;();&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;165:  &lt;/span&gt;&lt;span style="color: black"&gt;         &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;166:  &lt;/span&gt;&lt;span style="color: black"&gt;        View.&lt;/span&gt;&lt;span style="color: #191970"&gt;Property&lt;/span&gt;&lt;span style="color: black"&gt;(HeatingType.idProperty).&lt;/span&gt;&lt;span style="color: #191970"&gt;HasLabel&lt;/span&gt;&lt;span style="color: black"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;"id"&lt;/span&gt;&lt;span style="color: black"&gt;).&lt;/span&gt;&lt;span style="color: #191970"&gt;ShowIn&lt;/span&gt;&lt;span style="color: black"&gt;(ShowInWhere.All);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;167:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;168:  &lt;/span&gt;&lt;span style="color: black"&gt;        View.&lt;/span&gt;&lt;span style="color: #191970"&gt;Property&lt;/span&gt;&lt;span style="color: black"&gt;(HeatingType.ht_NameProperty).&lt;/span&gt;&lt;span style="color: #191970"&gt;HasLabel&lt;/span&gt;&lt;span style="color: black"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;"ht_Name"&lt;/span&gt;&lt;span style="color: black"&gt;).&lt;/span&gt;&lt;span style="color: #191970"&gt;ShowIn&lt;/span&gt;&lt;span style="color: black"&gt;(ShowInWhere.All);&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;169:  &lt;/span&gt;&lt;span style="color: black"&gt;        &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;192:  &lt;/span&gt;&lt;span style="color: black"&gt;         }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;193:  &lt;/span&gt;&lt;span style="color: black"&gt;    }&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;194:  &lt;/span&gt;&lt;span style="color: black"&gt;}&lt;/span&gt;  &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2526143.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/05/30/2526143.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/05/04/2483065.html</id><title type="text">OEA框架学习：运行时</title><summary type="text">一、摘要 在这里主要是写OEA设计方面的知识了。OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发 OEA 在启动的时候都做了什么事情，我们现在打开VS1010启动调试，我一步步去揭开OEA神秘的面纱。 我们这里主要讲WPF的运行生成时。，当然还有其他的客服端 如: WEB 二、本文大纲 a、摘要 。 b、准备工作。 c、我们启动项目了，按F5 。 d、老罗瞎说 。 三...</summary><published>2012-05-04T09:41:00Z</published><updated>2012-05-04T09:41:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/05/04/2483065.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/05/04/2483065.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里主要是写OEA设计方面的知识了。OEA 源码：&lt;a href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt;的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OEA 在启动的时候都做了什么事情，我们现在打开VS1010启动调试，我一步步去揭开OEA神秘的面纱。&lt;/p&gt;    &lt;p&gt;我们这里主要讲WPF的运行生成时。，当然还有其他的客服端 如: WEB&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、准备工作。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、我们启动项目了，按F5 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、老罗瞎说&amp;nbsp; 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、准备工作 &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们先来看一下项目结构.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740264335.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740386147.png" width="309" height="450" /&gt;&lt;/a&gt; 黄色区域是我自己创建的几个项目，其他的都是OEA自带的。&lt;/p&gt;    &lt;p&gt;我们先抛出几个问题先：&lt;/p&gt;    &lt;p&gt;1：启动界面之前做了什么，页面框架是如何布局的。&lt;/p&gt;    &lt;p&gt;2：数据库自动生成，还带有关系哦，如 父子表，主外键 等的生成。。&lt;/p&gt;    &lt;p&gt;3：需要插件加载吧。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;四、我们启动项目了，按F5&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 等不及了，我们还是直接按F5把，在之前要加个断点啦&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740489711.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/20120504174049890.png" width="644" height="232" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;不要告诉我你不知道这个位置哦，要不然BS你，嘿嘿&amp;nbsp; 。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740503813.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740533828.png" width="644" height="308" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;一下就跳到OEA.Module.WPF项目中的ClientApp这个类继承富客服端类，在这个类的Register&lt;/p&gt;    &lt;p&gt;有跳到本类中AttachTo函数上了，这个函数的主要功能在OnAppStartup()函数了，一看就是一个&lt;/p&gt;    &lt;p&gt;启动函数啊，里面肯定就是 一系列函数列表了。但是是什么呢，我们继续往下看，&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740563012.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740561998.png" width="401" height="519" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;1：初始化环境&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740574540.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740578717.png" width="370" height="119" /&gt;&lt;/a&gt; 环境的初始化应该就是创建一些必要的文件夹把，我们&lt;/p&gt;    &lt;p&gt;去看看，先第一个函数。如下：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041740597312.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741005426.png" width="660" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;上面的注释看的懂吧，就是先在\Files\Common 创建客户化文件夹，不过我们这里是空的因为需要&lt;/p&gt;    &lt;p&gt;在APP.CONFIG中配置 &lt;strong&gt;&amp;lt;add key="CustomerDir" value=""/&amp;gt;&lt;/strong&gt; 节点，我们这里没有配置，我们下节&lt;/p&gt;    &lt;p&gt;在讲OEA客户化支持。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741025690.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741038265.png" width="671" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;一看这个 就是 一个反射的机制啊，看来大部分框架都是用反射机制实现的了，OEA的插件机制也是，呵呵。&lt;/p&gt;    &lt;p&gt;上面还是创建一些必要文件夹啊，我们跳过直接往下吧。&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2：初始化插件&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;下面的初始化主要还是依赖这个函数了。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741041919.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741046445.png" width="473" height="298" /&gt;&lt;/a&gt; 注意：Library.Initialize 这个就是吧DLL加载到_ppCore容器中了。&lt;/p&gt;    &lt;p&gt;我们一看这个GetAllLibraries()函数应经就是读取Libraries文件夹下的DLL这个函数肯定用的是反射，我们看一先&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741073088.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741087954.png" width="750" height="269" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;你看我们找到了，哈哈。只是用的是4.0的技术了，不知道性能怎么样哦，如果一下加载100，上千个DLL 不知道是个什么样子哦。(*^__^*) 嘻嘻&amp;#8230;&amp;#8230;，不过一般不会出现这样的情况啦。继续。&lt;/p&gt;    &lt;p&gt;这里应该就是把DLL的数据读取到内存了，有一部分应经是为了初始化菜单用的了。&lt;/p&gt;    &lt;p&gt;3： 初始化托管属性&lt;/p&gt;    &lt;p&gt;4：初始化命令（添加，删除，修改等常用命令&amp;#8230;&amp;#8230;）&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741099972.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/20120504174110910.png" width="614" height="287" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;具体如下：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741126747.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201205/201205041741165715.png" width="738" height="490" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;5：定义模块列表（其实就是菜单，嘿嘿）。&lt;/p&gt;    &lt;p&gt;6：初始化元素，默认只读。&lt;/p&gt;    &lt;p&gt;7：中间还有一些事件，不过不知道是做什么的应该是跟页面有关。      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;五、老罗瞎说&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据上面的运行情况，主要就是 设置系统文件夹，加载实体和插件，初始化界面所需要的数据，升级数据库&lt;/p&gt;    &lt;p&gt;不知道为什么还需要一个元数据初始化，为只读。 &lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2483065.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/05/04/2483065.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/26/2471740.html</id><title type="text">OEA体验：查询面板</title><summary type="text">一、摘要 在这里主要是写OEA设计方面的知识了。OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发 OEA提供了自定义模板机制。我们这里主要是 实现简单的 查询面板 二、本文大纲 a、摘要 。 b、远景 。 c、项目结构 。 d、OEA实现方法 。 三、远景 圈圈里的就是我们要实现查询条件，这个条件也是比较通用的，我们只要做一次就可以在多个页面上使用这个功能了，爽...</summary><published>2012-04-26T09:21:00Z</published><updated>2012-04-26T09:21:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/26/2471740.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/26/2471740.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里主要是写OEA设计方面的知识了。OEA 源码：&lt;a href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt;的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OEA提供了自定义模板机制。我们这里主要是 实现简单的 查询面板&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、远景 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、项目结构 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、OEA实现方法&amp;nbsp; 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、远景 &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 圈圈里的就是我们要实现查询条件，这个条件也是比较通用的，我们只要做一次就可以在多个页面上使用这个功能了，爽吧，减少的重复劳动了。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721123330.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721132000.png" width="733" height="252" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;这个我们这里只用到了一个表的数据。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;四、项目结构 &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721138163.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721145197.png" width="271" height="410" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;用到的主要的类 如下：&lt;/p&gt;    1:Charging.cs  2:ChargingDateCriteria.cs   3:TimeSpanCriteria.cs&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;五、OEA实现方法 &lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们现在来看看他是如何实现的&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1：第一步查询条件基础TimeSpanCriteria.cs &lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  1:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  2:  &lt;/span&gt;&lt;span style="color: blue"&gt;public abstract class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Criteria&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  3:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  4:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;TimeSpanCriteria()    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  5:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  6:  &lt;/span&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.TimeSpanType = &lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.LastMonth;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  7:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  8:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;  9:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;&amp;gt; TimeSpanTypeProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.TimeSpanType, &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyMetadata&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 10:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 11:  &lt;/span&gt;        PropertyChangedCallBack = (o, e) =&amp;gt; (o &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;).OnTimeSpanTypeChanged(e)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 12:  &lt;/span&gt;    });    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 13:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType &lt;/span&gt;TimeSpanType    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 14:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 15:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(TimeSpanTypeProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 16:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetProperty(TimeSpanTypeProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 17:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 18:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected virtual void &lt;/span&gt;OnTimeSpanTypeChanged(&lt;span style="color: #2b91af"&gt;ManagedPropertyChangedEventArgs&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;&amp;gt; e)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 19:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 20:  &lt;/span&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;today = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Today;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 21:  &lt;/span&gt;        &lt;span style="color: blue"&gt;switch &lt;/span&gt;(e.NewValue)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 22:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 23:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.Today:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 24:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = today;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 25:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 26:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.Week:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 27:  &lt;/span&gt;                &lt;span style="color: blue"&gt;var &lt;/span&gt;dayOfWeek = (&lt;span style="color: blue"&gt;int&lt;/span&gt;)today.DayOfWeek;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 28:  &lt;/span&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(dayOfWeek == 0) dayOfWeek = 7;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 29:  &lt;/span&gt;                dayOfWeek--;&lt;span style="color: green"&gt;//0-6&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 30:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 31:  &lt;/span&gt;&lt;span style="color: green"&gt;                &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;monday = today.AddDays(-dayOfWeek);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 32:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = monday;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 33:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = monday.AddDays(6);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 34:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 35:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.Month:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 36:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(today.Year, today.Month, 1);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 37:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(today.Year, today.Month, &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.DaysInMonth(today.Year, today.Month));    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 38:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 39:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.LastMonth:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 40:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = today.AddDays(-30);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 41:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = today;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 42:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 43:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.Year:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 44:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(today.Year, 1, 1);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 45:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(today.Year, 12, &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.DaysInMonth(today.Year, 12));    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 46:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 47:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.All:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 48:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.From = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(1800, 1, 1);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 49:  &lt;/span&gt;                &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(9999, 12, 31);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 50:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 51:  &lt;/span&gt;            &lt;span style="color: blue"&gt;case &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;.Custom:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 52:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 53:  &lt;/span&gt;            &lt;span style="color: blue"&gt;default&lt;/span&gt;:    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 54:  &lt;/span&gt;                &lt;span style="color: blue"&gt;break&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 55:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 56:  &lt;/span&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;to = &lt;span style="color: blue"&gt;this&lt;/span&gt;.To;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 57:  &lt;/span&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.To = to.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpan&lt;/span&gt;(23, 59, 59));    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 58:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 59:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 60:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;&amp;gt; FromProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.From);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 61:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;From    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 62:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 63:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(FromProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 64:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetProperty(FromProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 65:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 66:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 67:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;&amp;gt; ToProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.To);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 68:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;To    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 69:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 70:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(ToProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 71:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetProperty(ToProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 72:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 73:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 74:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteriaConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 75:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 76:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 77:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 78:  &lt;/span&gt;        View.DomainName(&lt;span style="color: #a31515"&gt;"查&amp;#233;询ˉ条?件t"&lt;/span&gt;);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 79:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 80:  &lt;/span&gt;        &lt;span style="color: green"&gt;//横&amp;#225;向&amp;#242;显?示?查&amp;#233;询ˉ面?板?。￡&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 81:  &lt;/span&gt;&lt;span style="color: green"&gt;        //View.DetailAsHorizontal = true;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 82:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 83:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(View.OrderProperties())    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 84:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 85:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.TimeSpanTypeProperty)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 86:  &lt;/span&gt;                .HasLabel(&lt;span style="color: #a31515"&gt;"入?库a日?期&amp;#250;"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 87:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.FromProperty)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 88:  &lt;/span&gt;                .HasLabel(&lt;span style="color: #a31515"&gt;"从&amp;#243;"&lt;/span&gt;).ShowInDetail(labelWidth: 30);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 89:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.ToProperty)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 90:  &lt;/span&gt;                .HasLabel(&lt;span style="color: #a31515"&gt;"至&amp;#225;"&lt;/span&gt;).ShowInDetail(labelWidth: 30);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 91:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 92:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 93:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 94:  &lt;/span&gt;&lt;span style="color: blue"&gt;public enum &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpanType&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 95:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 96:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"自?定&amp;#168;义?"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 97:  &lt;/span&gt;    Custom,    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 98:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"当&amp;#177;天&amp;#236;"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 99:  &lt;/span&gt;    Today,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;100:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"本?周&amp;#252;"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;101:  &lt;/span&gt;    Week,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;102:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"本?月?"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;103:  &lt;/span&gt;    Month,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;104:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"最?近&amp;#252;一?月?"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;105:  &lt;/span&gt;    LastMonth,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;106:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"本?年&amp;#234;"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;107:  &lt;/span&gt;    Year,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;108:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Label&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"全?部?"&lt;/span&gt;)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;109:  &lt;/span&gt;    All    &lt;span style="line-height: 18px; color: #4f81bd"&gt;110:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;111:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;2：第二步查询面板对应的模型ChargingDateCriteria.cs &lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;QueryEntity&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ChargingDateCriteria &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Charging&lt;/span&gt;&amp;gt; ChargingRefProperty =    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ChargingDateCriteria&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.Charging, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.Normal);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;ChargingId    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(ChargingRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(ChargingRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Charging &lt;/span&gt;Charging    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(ChargingRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(ChargingRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ChargingDateCriteriaConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ChargingDateCriteria&lt;/span&gt;&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;        &lt;span style="color: blue"&gt;using &lt;/span&gt;(View.OrderProperties())    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.TimeSpanTypeProperty);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.FromProperty);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;            View.Property(&lt;span style="color: #2b91af"&gt;TimeSpanCriteria&lt;/span&gt;.ToProperty);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;29:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;30:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;第三步查询面板关联那个模型&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721163410.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721171001.png" width="664" height="457" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;第四步显示在菜单上MyLibrary.CS     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721172463.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120426172118577.png" width="624" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp; 菜单界面，点击计费查询就可以看到上面的效果图了是不是很简单。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721188691.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204261721195692.png" width="158" height="119" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;那我们现在想把这个条件附件到其他的模型上这么处理呢，如计费设定也想要这样的功能。&lt;/p&gt;  &lt;p&gt;只需要从第二步改起就可以了。&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2471740.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/26/2471740.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/23/2466659.html</id><title type="text">OEA体验：查看模板</title><summary type="text">一、摘要 在这里主要是写OEA设计方面的知识了。OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发 OEA提供了自定义模板机制。我们这里主要是先实现模板的查看 二、本文大纲 a、摘要 。 b、远景 。 c、项目结构 。 d、OEA实现方法 。 三、远景 我们先看效果图,这样我们可以知道，我们需要达到什么样的效果。 从上图上，我们可以看出我这里需要用...</summary><published>2012-04-23T08:39:00Z</published><updated>2012-04-23T08:39:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/23/2466659.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/23/2466659.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里主要是写OEA设计方面的知识了。OEA 源码：&lt;a href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt;的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OEA提供了自定义模板机制。我们这里主要是先实现模板的查看&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、远景 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、项目结构 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、OEA实现方法&amp;nbsp; 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、远景 &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们先看效果图,这样我们可以知道，我们需要达到什么样的效果。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638359379.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638365541.png" width="739" height="491" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;从上图上，我们可以看出我这里需要用到三个表的数据。&lt;/p&gt;    &lt;p&gt;一个组本身的数据，一个是组成员的数据。&lt;/p&gt;    &lt;p&gt;像的页面应该是经常看到了。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;四、项目结构， &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638365084.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120423163837133.png" width="311" height="442" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;主要的文件:&amp;nbsp; &lt;/p&gt;    &lt;p&gt;Commands/ShowBill.cs&lt;/p&gt;    &lt;p&gt;Templates/BillTemplate.cs&lt;/p&gt;    &lt;p&gt;Layouts/BillLayout.xaml&lt;/p&gt;    &lt;p&gt;HeatingAppModule.cs&lt;/p&gt;    &lt;p&gt;那他们的内容是？&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;五、OEA实现方法， &lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1:定义一个页面文件 Layouts/BillLayout.xaml&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2:这个页面文件对应的类Templates/BillTemplate.cs&amp;nbsp;&amp;nbsp; Commands/ShowBill.cs&lt;/p&gt;    &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Command&lt;/span&gt;(Label = &lt;span style="color: #a31515"&gt;"查&amp;#233;看&amp;#8242;"&lt;/span&gt;, GroupType = &lt;span style="color: #2b91af"&gt;CommandGroupType&lt;/span&gt;.Edit)]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ShowBill &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;ListViewCommand&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;ShowBill()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.Template = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReadonlyBillCommand&lt;/span&gt;();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CustomTemplate &lt;/span&gt;Template;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public override bool &lt;/span&gt;CanExecute(&lt;span style="color: #2b91af"&gt;ListObjectView &lt;/span&gt;view)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;view.Current != &lt;span style="color: blue"&gt;null&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public override void &lt;/span&gt;Execute(&lt;span style="color: #2b91af"&gt;ListObjectView &lt;/span&gt;view)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;        &lt;span style="color: green"&gt;//弹ˉ出?窗&amp;#176;体?显?示?详&amp;#234;细?面?板?&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;ui = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Template.CreateUI(view.EntityType);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;detailView = ui.MainView.CastTo&amp;lt;&lt;span style="color: #2b91af"&gt;DetailObjectView&lt;/span&gt;&amp;gt;();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;        detailView.Data = view.Current;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;        &lt;span style="color: #2b91af"&gt;App&lt;/span&gt;.Windows.ShowDialog(ui.Control, w =&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;            w.Buttons = &lt;span style="color: #2b91af"&gt;ViewDialogButtons&lt;/span&gt;.Close;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;            w.Title = &lt;span style="color: blue"&gt;this&lt;/span&gt;.CommandInfo.Label + view.Meta.Label;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;        });    &lt;span style="line-height: 18px; color: #4f81bd"&gt;29:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;30:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;31:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;Templates/BillTemplate.cs&amp;nbsp;&amp;nbsp; &lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;单￥据Y模￡块&amp;#233;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BillTemplate &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;CustomTemplate&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AggtBlocks &lt;/span&gt;DefineBlocks()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;blocks = &lt;span style="color: blue"&gt;base&lt;/span&gt;.DefineBlocks();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;        &lt;span style="color: green"&gt;//只?需&amp;#232;要a把?主&amp;#247;块&amp;#233;的?生&amp;#250;成&amp;#233;方?式?变?为a Detail 就&amp;#237;行D了?。￡&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;blocks.MainBlock.BlockType = &lt;span style="color: #2b91af"&gt;BlockType&lt;/span&gt;.Detail;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;        blocks.MainBlock.ViewMeta.ClearWPFCommands();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        blocks.Layout = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;LayoutMeta&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TraditionalLayoutMethod&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;BillLayout&lt;/span&gt;&amp;gt;));    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;blocks;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;一?个?只?读&amp;#225;的?单￥据Y模￡块&amp;#233;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReadonlyBillCommand &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;BillTemplate&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AggtBlocks &lt;/span&gt;DefineBlocks()    &lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;blocks = &lt;span style="color: blue"&gt;base&lt;/span&gt;.DefineBlocks();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;29:  &lt;/span&gt;        blocks.MainBlock.ViewMeta.DisableEditing();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;30:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;31:  &lt;/span&gt;        &lt;span style="color: green"&gt;//把?所&amp;#249;有D孩￠子&amp;#243;块&amp;#233;上?的?非?查&amp;#233;询ˉ型&amp;#237;命&amp;#252;令?都?删?除y&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;32:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;child &lt;span style="color: blue"&gt;in &lt;/span&gt;blocks.Children)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;33:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;34:  &lt;/span&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;childMeta = child.MainBlock.ViewMeta;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;35:  &lt;/span&gt;            childMeta.DisableEditing();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;36:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;37:  &lt;/span&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;commands = childMeta.WPFCommands;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;38:  &lt;/span&gt;            &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = commands.Count - 1; i &amp;gt;= 0; i--)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;39:  &lt;/span&gt;            {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;40:  &lt;/span&gt;                &lt;span style="color: blue"&gt;var &lt;/span&gt;cmd = commands[i];    &lt;span style="line-height: 18px; color: #4f81bd"&gt;41:  &lt;/span&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(cmd.GroupType != &lt;span style="color: #2b91af"&gt;CommandGroupType&lt;/span&gt;.View)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;42:  &lt;/span&gt;                {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;43:  &lt;/span&gt;                    commands.Remove(cmd);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;44:  &lt;/span&gt;                }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;45:  &lt;/span&gt;            }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;46:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;47:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;48:  &lt;/span&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;blocks;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;49:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;50:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;51:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;Layouts/BillLayout.xaml&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;="HeatingApp.WPF.BillLayout"&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;mc&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006" &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;d&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/expression/blend/2008" &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;mc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Ignorable&lt;/span&gt;&lt;span style="color: blue"&gt;="d" &lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: blue"&gt;             &lt;/span&gt;&lt;span style="color: red"&gt;d&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;DesignHeight&lt;/span&gt;&lt;span style="color: blue"&gt;="300" &lt;/span&gt;&lt;span style="color: red"&gt;d&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;DesignWidth&lt;/span&gt;&lt;span style="color: blue"&gt;="300"&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;&lt;span style="color: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DockPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&lt;span style="color: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentControl &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="commands" &lt;/span&gt;&lt;span style="color: red"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color: blue"&gt;="Top"/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;&lt;span style="color: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentControl &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="content" &lt;/span&gt;&lt;span style="color: red"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color: blue"&gt;="Top"/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&lt;span style="color: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabControl &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="childrenTab"/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;&lt;span style="color: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DockPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;对应的代码页：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BillLayout &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;ITraditionalLayoutControl&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;   &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;       &lt;span style="color: blue"&gt;public &lt;/span&gt;BillLayout()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;       {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;           InitializeComponent();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;       }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;       &lt;span style="color: blue"&gt;public void &lt;/span&gt;Arrange(&lt;span style="color: #2b91af"&gt;TraditionalComponents &lt;/span&gt;components)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;       {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;           &lt;span style="color: blue"&gt;var &lt;/span&gt;control = components.Main;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;           &lt;span style="color: blue"&gt;if &lt;/span&gt;(control != &lt;span style="color: blue"&gt;null&lt;/span&gt;) { content.Content = control.Control; }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;           control = components.CommandsContainer;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;           &lt;span style="color: blue"&gt;if &lt;/span&gt;(control != &lt;span style="color: blue"&gt;null&lt;/span&gt;) { commands.Content = control.Control; }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;           components.ArrangeChildrenByTabControl(childrenTab);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;       }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;   }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;HeatingAppModule.cs&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;HeatingAppModule &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IModule&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;    &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReuseLevel &lt;/span&gt;ReuseLevel    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ReuseLevel&lt;/span&gt;.Main; }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Initialize(&lt;span style="color: #2b91af"&gt;IClientApp &lt;/span&gt;app)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;            app.ModuleOperations += (o, e) =&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;            {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;                &lt;span style="color: #2b91af"&gt;CommonModel&lt;/span&gt;.Modules[&lt;span style="color: #a31515"&gt;"计?费?编&amp;#224;辑-"&lt;/span&gt;].UseCustomModule&amp;lt;&lt;span style="color: #2b91af"&gt;GroupModule&lt;/span&gt;&amp;gt;();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;            };    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;            app.MainWindowLoaded += (o, e) =&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;            {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;                &lt;span style="color: #2b91af"&gt;App&lt;/span&gt;.Current.OpenModuleOrAlert(&lt;span style="color: #a31515"&gt;"计?费?编&amp;#224;辑-"&lt;/span&gt;);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;            };    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  这里需要主要的是 这里的中文需要对应类库里的中文MyLibrary要不然系统会提示错误&lt;br/&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638375183.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638389676.png" width="670" height="183" /&gt;&lt;/a&gt;   GroupModule.cs  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;1:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;GroupModule &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;ModuleBase&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;2:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt;3:  &lt;/span&gt;      &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;OnItemCreated(&lt;span style="color: #2b91af"&gt;Entity &lt;/span&gt;entity)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;4:  &lt;/span&gt;      {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;5:  &lt;/span&gt;          &lt;span style="color: blue"&gt;base&lt;/span&gt;.OnItemCreated(entity);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;6:  &lt;/span&gt;      }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;7:  &lt;/span&gt;  }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;8:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;这个查看是通用的，你还可以使用到别的地方。我现在来看我们是如何使用这个查看功能。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638383330.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638398936.png" width="725" height="250" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;这个查看功能要用到别的地方需要修改三个地方：&lt;/p&gt;  &lt;p&gt;HeatingAppModule.cs 自定义功能模块&lt;/p&gt;  &lt;p&gt;MyLibrary 对应的模型&lt;/p&gt;  &lt;p&gt;模型下对应的ConfigView 显示在那里。&lt;/p&gt;  &lt;p&gt;下面还有添加和删除，编辑 功能。&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;strong&gt;常见错误：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638411925.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204231638424598.png" width="651" height="490" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2466659.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/23/2466659.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/12/2443977.html</id><title type="text">OEA体验：常用功能3 多对多关系</title><summary type="text">一、摘要 在这里主要是写OEA设计方面的知识了。OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发。二、本文大纲 a、摘要 。 b、UML图 （业务逻辑梳理，和父子关系的） 。 c、项目结构，效果图 。 d、OEA实现方法 。三、UML图 这个图，我可是求高手求了好久才教我的 嘻嘻。热点： 网关 设备 用户 小区他们的关系是： 网关下面有多个设备 小区下面有多个用户 用户下面有多个设备 设备下面有多个 用户他们的类图如下：象下面这个图里面有.</summary><published>2012-04-12T06:52:00Z</published><updated>2012-04-12T06:52:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/12/2443977.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/12/2443977.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里主要是写OEA设计方面的知识了。OEA 源码：&lt;a href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;&lt;/p&gt;&lt;p&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt;的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、UML图 （业务逻辑梳理，和父子关系的） 。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、项目结构，效果图&amp;nbsp; 。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、OEA实现方法&amp;nbsp; 。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;三、UML图 &lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;这个图，我可是求高手求了好久才教我的 嘻嘻。&lt;/p&gt;&lt;p&gt;热点： 网关&amp;nbsp; 设备 用户 小区&lt;/p&gt;&lt;p&gt;他们的关系是： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 网关下面有多个设备&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 小区下面有多个用户&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用户下面有多个设备&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 设备下面有多个 用户&lt;/p&gt;&lt;p&gt;他们的类图如下：&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450162798.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="1b@vq@fkks1}$m$x6dhrisv" border="0" alt="1b@vq@fkks1}$m$x6dhrisv" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450175764.jpg" width="673" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;象下面这个图里面有个多对多，我们需要把它简化为这样的：这个是OEA提倡的分解关系&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450176254.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="[gx}x70o{s`509in]0wnkfc" border="0" alt="[gx}x70o{s`509in]0wnkfc" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450188696.jpg" width="674" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;要用到OEA的外键，父子，界面扩展命令。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;四、项目结构，效果图 &lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp; 项目结构图：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450183090.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450191945.png" width="276" height="385" /&gt;&lt;/a&gt;对应的数据库结构：&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450193548.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450219795.png" width="188" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 效果图：&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450215269.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450224646.png" width="732" height="361" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;五、OEA实现方法&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt; 关联表的代码也是主代码了&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450232072.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204121450253826.png" width="508" height="186" /&gt;&lt;/a&gt;&amp;nbsp; 下面的代码主要是完成这个图啦&lt;/p&gt;&lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 1: &lt;/span&gt;&lt;span style="color: green"&gt;// 设备 用户 关联表&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 2: &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ChildEntity&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;span style="line-height: 18px; color: #4f81bd"&gt; 3: &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDAssociation &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 4: &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{&lt;span style="line-height: 18px; color: #4f81bd"&gt; 5: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Device&lt;/span&gt;&amp;gt; DeviceRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt; 6: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.Device, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Normal&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt; 7: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;DeviceId&lt;span style="line-height: 18px; color: #4f81bd"&gt; 8: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt; 9: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(DeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;10: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(DeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;11: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;12: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Device &lt;/span&gt;Device&lt;span style="line-height: 18px; color: #4f81bd"&gt;13: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;14: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(DeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;15: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(DeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;16: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;17: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;18: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;HouseHold&lt;/span&gt;&amp;gt; HouseHoldRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt;19: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.HouseHold, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Parent&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;20: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;HouseHoldId&lt;span style="line-height: 18px; color: #4f81bd"&gt;21: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;22: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(HouseHoldRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;23: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(HouseHoldRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;24: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;25: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;HouseHold &lt;/span&gt;HouseHold&lt;span style="line-height: 18px; color: #4f81bd"&gt;26: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;27: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(HouseHoldRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;28: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(HouseHoldRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;29: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;30: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;31: &lt;/span&gt; &lt;span style="color: blue"&gt;#region &lt;/span&gt;视图属性&lt;span style="line-height: 18px; color: #4f81bd"&gt;32: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; View_CodeProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt;.RegisterReadOnly(e =&amp;gt; e.View_Code, e =&amp;gt; (e &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;).GetView_Code(), &lt;span style="color: blue"&gt;null&lt;/span&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;33: &lt;/span&gt; &lt;span style="color: blue"&gt;public string &lt;/span&gt;View_Code&lt;span style="line-height: 18px; color: #4f81bd"&gt;34: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;35: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(View_CodeProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;36: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;37: &lt;/span&gt; &lt;span style="color: blue"&gt;private string &lt;/span&gt;GetView_Code()&lt;span style="line-height: 18px; color: #4f81bd"&gt;38: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;39: &lt;/span&gt; &lt;span style="color: blue"&gt;return this&lt;/span&gt;.Device.Id.ToString();&lt;span style="line-height: 18px; color: #4f81bd"&gt;40: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;41: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;42: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; View_NameProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt;.RegisterReadOnly(e =&amp;gt; e.View_Name, e =&amp;gt; (e &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;).GetView_Name(), &lt;span style="color: blue"&gt;null&lt;/span&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;43: &lt;/span&gt; &lt;span style="color: blue"&gt;public string &lt;/span&gt;View_Name&lt;span style="line-height: 18px; color: #4f81bd"&gt;44: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;45: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(View_NameProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;46: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;47: &lt;/span&gt; &lt;span style="color: blue"&gt;private string &lt;/span&gt;GetView_Name()&lt;span style="line-height: 18px; color: #4f81bd"&gt;48: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;49: &lt;/span&gt; &lt;span style="color: blue"&gt;return this&lt;/span&gt;.Device.Name;&lt;span style="line-height: 18px; color: #4f81bd"&gt;50: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;51: &lt;/span&gt; &lt;span style="color: blue"&gt;#endregion&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;52: &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;53: &lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;54: &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;}&lt;span style="line-height: 18px; color: #4f81bd"&gt;55: &lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;一个设备对应多个用户&lt;/p&gt;&lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 1: &lt;/span&gt;&lt;span style="color: green"&gt;// 一个设备对应多个用户&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 2: &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ChildEntity&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;span style="line-height: 18px; color: #4f81bd"&gt; 3: &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDHouseHold &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 4: &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{&lt;span style="line-height: 18px; color: #4f81bd"&gt; 5: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt; UserDeviceRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt; 6: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.UDAssociation, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Parent&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt; 7: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;UDAssociationId&lt;span style="line-height: 18px; color: #4f81bd"&gt; 8: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt; 9: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(UserDeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;10: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(UserDeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;11: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;12: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDAssociation &lt;/span&gt;UDAssociation&lt;span style="line-height: 18px; color: #4f81bd"&gt;13: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;14: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(UserDeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;15: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(UserDeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;16: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;17: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;HouseHold&lt;/span&gt;&amp;gt; HouseHoldRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt;18: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.HouseHold, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Normal&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;19: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;HouseHoldId&lt;span style="line-height: 18px; color: #4f81bd"&gt;20: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;21: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(HouseHoldRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;22: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(HouseHoldRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;23: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;24: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;HouseHold &lt;/span&gt;HouseHold&lt;span style="line-height: 18px; color: #4f81bd"&gt;25: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;26: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(HouseHoldRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;27: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(HouseHoldRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;28: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;29: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;30: &lt;/span&gt; &lt;span style="color: blue"&gt;#region &lt;/span&gt;视&amp;#243;图?属?性?&lt;span style="line-height: 18px; color: #4f81bd"&gt;31: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;32: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; View_CodeProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;&amp;gt;.RegisterReadOnly(e =&amp;gt; e.View_Code, e =&amp;gt; (e &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;).GetView_Code(), &lt;span style="color: blue"&gt;null&lt;/span&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;33: &lt;/span&gt; &lt;span style="color: blue"&gt;public string &lt;/span&gt;View_Code&lt;span style="line-height: 18px; color: #4f81bd"&gt;34: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;35: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(View_CodeProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;36: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;37: &lt;/span&gt; &lt;span style="color: blue"&gt;private string &lt;/span&gt;GetView_Code()&lt;span style="line-height: 18px; color: #4f81bd"&gt;38: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;39: &lt;/span&gt; &lt;span style="color: blue"&gt;return &lt;/span&gt;HouseHold.Id.ToString();&lt;span style="line-height: 18px; color: #4f81bd"&gt;40: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;41: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;42: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; View_NameProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;&amp;gt;.RegisterReadOnly(e =&amp;gt; e.View_Name, e =&amp;gt; (e &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDHouseHold&lt;/span&gt;).GetView_Name(), &lt;span style="color: blue"&gt;null&lt;/span&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;43: &lt;/span&gt; &lt;span style="color: blue"&gt;public string &lt;/span&gt;View_Name&lt;span style="line-height: 18px; color: #4f81bd"&gt;44: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;45: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(View_NameProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;46: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;47: &lt;/span&gt; &lt;span style="color: blue"&gt;private string &lt;/span&gt;GetView_Name()&lt;span style="line-height: 18px; color: #4f81bd"&gt;48: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;49: &lt;/span&gt; &lt;span style="color: blue"&gt;return &lt;/span&gt;HouseHold.Name;&lt;span style="line-height: 18px; color: #4f81bd"&gt;50: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;51: &lt;/span&gt;&amp;nbsp;&lt;span style="line-height: 18px; color: #4f81bd"&gt;52: &lt;/span&gt; &lt;span style="color: blue"&gt;#endregion&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;53: &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;}&lt;span style="line-height: 18px; color: #4f81bd"&gt;54: &lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt; 一个用户有多个设备&lt;/p&gt;&lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 1: &lt;/span&gt;&lt;span style="color: green"&gt;// 一?个?用?户&amp;#167;有D多&amp;#224;个?设&amp;#232;备?&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 2: &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ChildEntity&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]&lt;span style="line-height: 18px; color: #4f81bd"&gt; 3: &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDDevices &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;MyEntity&lt;/span&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 4: &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{&lt;span style="line-height: 18px; color: #4f81bd"&gt; 5: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDAssociation&lt;/span&gt;&amp;gt; UDAssociationRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt; 6: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDDevices&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.UDAssociation, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Parent&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt; 7: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;UDAssociationId&lt;span style="line-height: 18px; color: #4f81bd"&gt; 8: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt; 9: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(UDAssociationRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;10: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(UDAssociationRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;11: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;12: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UDAssociation &lt;/span&gt;UDAssociation&lt;span style="line-height: 18px; color: #4f81bd"&gt;13: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;14: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(UDAssociationRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;15: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(UDAssociationRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;16: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;17: &lt;/span&gt; &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Device&lt;/span&gt;&amp;gt; DeviceRefProperty =&lt;span style="line-height: 18px; color: #4f81bd"&gt;18: &lt;/span&gt; &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UDDevices&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.Device, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;strong&gt;Normal&lt;/strong&gt;);&lt;span style="line-height: 18px; color: #4f81bd"&gt;19: &lt;/span&gt; &lt;span style="color: blue"&gt;public int &lt;/span&gt;DeviceId&lt;span style="line-height: 18px; color: #4f81bd"&gt;20: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;21: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(DeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;22: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(DeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;23: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;24: &lt;/span&gt; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Device &lt;/span&gt;Device&lt;span style="line-height: 18px; color: #4f81bd"&gt;25: &lt;/span&gt; {&lt;span style="line-height: 18px; color: #4f81bd"&gt;26: &lt;/span&gt; &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(DeviceRefProperty); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;27: &lt;/span&gt; &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(DeviceRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;span style="line-height: 18px; color: #4f81bd"&gt;28: &lt;/span&gt; }&lt;span style="line-height: 18px; color: #4f81bd"&gt;29: &lt;/span&gt;}&lt;span style="line-height: 18px; color: #4f81bd"&gt;30: &lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt; 啥也不说了，直接下载源码看了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="#" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="btn_download" border="0" alt="btn_download" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120412145025936.png" width="244" height="68" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2443977.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/12/2443977.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/09/2439165.html</id><title type="text">OEA框架学习：包结构</title><summary type="text">一、摘要 在这里主要是写OEA设计方面的知识了。OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发。 二、本文大纲 a、摘要 。 b、总体包结构图 。 c、插件开发需要用到的包。 d、。 三、总体包结构图 先了解包与包之间的关系，对包的作用域有很深的了解做基础 包与包之间的引用关系： OEA 引用： Common ...</summary><published>2012-04-09T08:39:00Z</published><updated>2012-04-09T08:39:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/09/2439165.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/09/2439165.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里主要是写OEA设计方面的知识了。OEA 源码：&lt;a href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt;的博客和中可以下到。虽然现在应经知道使用了，但是还是 需要了解框架相关知识运行机制，让我们更好的使用OEA进行开发。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、总体包结构图 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、插件开发需要用到的包。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、总体包结构图&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 先了解包与包之间的关系，对包的作用域有很深的了解做基础&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639027764.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639039617.png" width="608" height="508" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp; 包与包之间的引用关系：&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.Library        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;ManagedProperty        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;DbMigration        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&lt;strong&gt;Common        &lt;br /&gt;&lt;/strong&gt;==================================       &lt;br /&gt;前台支持：       &lt;br /&gt;WPF &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.Module.WPF        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Module       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta       &lt;br /&gt;&lt;strong&gt;OEA.Module        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library &lt;/p&gt;    &lt;p&gt;Web      &lt;br /&gt;&lt;strong&gt;OEA.Web        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.Web.Meta        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;四、插件开发需要用到的包&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp; OEA自带的插件,如下图&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639043978.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639062318.png" width="542" height="446" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;==============OEA Plugins开发================= &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.DiskCaching        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.RBAC        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.RBAC.WPF        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp; OEA.Module      &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Module.WPF       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.RBAC &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.UnitTest        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;==============OEA AutoTest================= &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.UIA &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEAUnitTest        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEAUnitTest &lt;/p&gt;    &lt;p&gt;开发一个权限插件,需要用OEA的那些类库呢,下图可以告诉你.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639078107.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204091639082153.png" width="550" height="324" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.RBAC        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;OEA.RBAC.WPF        &lt;br /&gt;&lt;/strong&gt;引用：       &lt;br /&gt;&amp;nbsp;&amp;nbsp; Common       &lt;br /&gt;&amp;nbsp;&amp;nbsp; DbMigration       &lt;br /&gt;&amp;nbsp;&amp;nbsp; ManagedProperty       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Library       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Web.Meta &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp; OEA.Module      &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.Module.WPF       &lt;br /&gt;&amp;nbsp;&amp;nbsp; OEA.RBAC &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;五、其他&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1：每个包的作用 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2：每个包的主要类库使用那些功能，解决程序员的那些问题 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3：使用了那些设计模式 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4：什么是信息化项目，什么是工具项目，如何区分，在什么场景最适合使用OEA 。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5：OEA 热点 。&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2439165.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/09/2439165.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/08/2437295.html</id><title type="text">OEA体验 ：常用功能2</title><summary type="text">一、摘要 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，希望高手们多多指点指点。 OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布 可以到BloodyAngel 的博客和中可以下到。 虽然作者的DEMO应经有了，但毕竟是写好的，只有自己动手才能更好的掌握这个框架，所谓体验决定深度嘛。 二、本文大纲 a、...</summary><published>2012-04-08T01:21:00Z</published><updated>2012-04-08T01:21:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/08/2437295.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/08/2437295.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，希望高手们多多指点指点。&lt;/p&gt;    &lt;p&gt;OEA 源码：&lt;a style="border-bottom: #efefef 0px dotted; padding-bottom: 10px; color: #78afd3; text-decoration: none" id="cb_post_title_url" href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html"&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt; 可以到&lt;a style="text-align: left; line-height: 18px; background-color: #ffffff; font-family: verdana; color: #666666; font-size: 12px; text-decoration: none" href="http://home.cnblogs.com/u/zgynhqf/"&gt;BloodyAngel&lt;/a&gt; 的博客和中可以下到。&lt;/p&gt;    &lt;p&gt;虽然作者的DEMO应经有了，但毕竟是写好的，只有自己动手才能更好的掌握这个框架，所谓体验决定深度嘛。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a、摘要 。&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b、DDD 之父子关系 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、DDD 之父子关系&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DDD思想可以查考周哥的&lt;a href="http://www.cnblogs.com/zhoujg/archive/2010/03/31/1700427.html"&gt;DDD － 使用聚合（Aggregate）来设计类库&lt;/a&gt;文章这里就不详述了。&lt;/p&gt;    &lt;p&gt;我们要实现的效果是：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204080921037241.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204080921061404.png" width="752" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;在这里我们还是要用到 小区表 和 客户表 哦 小区表是父 客户表是子&lt;/p&gt;    &lt;p&gt;父（&lt;span style="color: #2b91af"&gt;RootEntity&lt;/span&gt;）：下面的代码有 OEAPropertyChildren 生成。&lt;/p&gt;    &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: &amp;#39;Courier New&amp;#39;,&amp;#39;Consolas&amp;#39;,&amp;#39;Fixedsys&amp;#39;,&amp;#39;BitStream Vera Sans Mono&amp;#39;, courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt;描è述? : 街?道à小?区?.&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;see&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;类à库a对?应|的?数y据Y库a表í NT_Clcs_Village &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/see&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;/summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;RootEntity&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Village &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;DemoEntity&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&amp;#160;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Clientinfo&lt;font color="#ff0000"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;gt; ClientinfoListProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.ClientinfoList);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Association&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClientinfoList &lt;/span&gt;ClientinfoList    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetLazyChildren(ClientinfoListProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt; }  &lt;/div&gt;  &lt;p&gt;子(&lt;span style="color: #2b91af"&gt;ChildEntity&lt;/span&gt;)：下面的代码有 OEAPropertyReference 生成外键关系。&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: &amp;#39;Courier New&amp;#39;,&amp;#39;Consolas&amp;#39;,&amp;#39;Fixedsys&amp;#39;,&amp;#39;BitStream Vera Sans Mono&amp;#39;, courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt;描è述? : 客í户§信?息￠.&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;see&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;类à库a对?应|的?数y据Y库a表í NT_Clcs_ClientInfo &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/see&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;/summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ChildEntity&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Clientinfo &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;DemoEntity&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;&amp;gt; VillageRefProperty =    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;        &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Clientinfo&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.Village, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.&lt;font color="#ff0000"&gt;Parent&lt;/font&gt;);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;VillageId    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(VillageRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(VillageRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Village &lt;/span&gt;Village    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(VillageRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(VillageRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt; }  &lt;/div&gt;  &lt;p&gt;注意：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: &amp;#39;Courier New&amp;#39;,&amp;#39;Consolas&amp;#39;,&amp;#39;Fixedsys&amp;#39;,&amp;#39;BitStream Vera Sans Mono&amp;#39;, courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClientinfoConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;Clientinfo&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigView();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&amp;#160;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;        View.HasLabel(&lt;span style="color: #a31515"&gt;&amp;quot;客户&amp;quot;&lt;/span&gt;); // 主要要加上这个哦，要不然系统会报警的。    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&amp;#160;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;映射表：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: &amp;#39;Courier New&amp;#39;,&amp;#39;Consolas&amp;#39;,&amp;#39;Fixedsys&amp;#39;,&amp;#39;BitStream Vera Sans Mono&amp;#39;, courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;font color="#2b91af"&gt;Clientinfo&lt;/font&gt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Config &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;&lt;font color="#2b91af"&gt;Clientinfo&lt;/font&gt;&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;&lt;font color="#ff0000"&gt;ConfigMeta&lt;/font&gt;()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigMeta();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&amp;#160;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;        Meta.MapTable().HasColumns(    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;HouseHold&lt;/span&gt;.VillageRefProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;            );    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt; }  &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2437295.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/08/2437295.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/07/2436105.html</id><title type="text">OEA体验 ：常用功能1</title><summary type="text">一、摘要 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，希望高手们多多指点指点。 OEA 源码：OEA框架 2.9 Pre-Alpha 源码公布可以到BloodyAngel的博客中可以下到。 二、本文大纲 a、摘要。 b、数据过滤。 c、托管属性。 d、支持树型实体 。 二、数据过滤 数据查询是一个在平常不过的事，我们来看看OEA是怎么帮我们实现的。下面用一个简单的例子来说明，如我们要实现根据客户名称来查询，效果图如下： 要达到上面效果实现代码如下： 前台调用如下： 1...</summary><published>2012-04-07T12:54:00Z</published><updated>2012-04-07T12:54:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/07/2436105.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/07/2436105.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，希望高手们多多指点指点。&lt;/p&gt;    &lt;p&gt;OEA 源码：&lt;a id="cb_post_title_url" href="http://www.cnblogs.com/zgynhqf/archive/2012/03/30/2426197.html" style="border-bottom-style: dotted; border-bottom-width: 0px; border-bottom-color: #efefef; padding-bottom: 10px; color: #78afd3; text-decoration: none; "&gt;OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt;可以到&lt;a href="http://home.cnblogs.com/u/zgynhqf/" style="color: #666666; text-decoration: none; font-family: verdana; font-size: 12px; line-height: 18px; text-align: left; background-color: #ffffff; "&gt;BloodyAngel&lt;/a&gt;&amp;nbsp;的博客中可以下到。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、数据过滤。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、托管属性。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、支持树型实体 。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、数据过滤&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;数据查询是一个在平常不过的事，我们来看看OEA是怎么帮我们实现的。下面用一个简单的例子来说明，如我们要实现根据客户名称来查询，效果图如下：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616418591.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616414065.png" width="707" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;要达到上面效果实现代码如下：&lt;/p&gt;    &lt;p&gt;前台调用如下：&lt;/p&gt;    &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClientinfoConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;Clientinfo&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigMeta()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigMeta();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigView();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;        View.UseWPFCommands(&lt;span style="color: #a31515"&gt;"CLCS.WPF.ClientinfoSearchCommand"&lt;/span&gt;);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;具体代码如下：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;OEA.WPF.Command;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;OEA.MetaModel.Attributes;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;OEA.Module.WPF;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;OEA.Module.WPF.CommandAutoUI;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;OEA.MetaModel.View;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;CLCS.WPF    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;    [&lt;span style="color: #2b91af"&gt;Command&lt;/span&gt;(Label = &lt;span style="color: #a31515"&gt;"过滤客户名称"&lt;/span&gt;, UIAlgorithm = &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;GenericItemAlgorithm&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TextBoxButtonItemGenerator&lt;/span&gt;&amp;gt;))]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClientinfoSearchCommand &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;ListViewCommand&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;    &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public override void &lt;/span&gt;Execute(&lt;span style="color: #2b91af"&gt;ListObjectView &lt;/span&gt;view)    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;txt = &lt;span style="color: blue"&gt;this&lt;/span&gt;.TryGetCustomParams&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: #2b91af"&gt;CommandCustomParams&lt;/span&gt;.TextBox);                     // 设置查询条件    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;            view.Filter = e =&amp;gt; (e &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Clientinfo&lt;/span&gt;).CcName.Contains(txt);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;二、托管属性（代码生成 OEAPropertyReference ）&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;数据关联也是一个很平常的了，向下面的以前要写好多代码现在还不到10行就可以了。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616421457.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120407161643835.png" width="690" height="243" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;在这需要用 小区表，和客户表&amp;nbsp; 两个表&lt;/p&gt;  &lt;p&gt;DemoEntity 类可以在&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/03/2431478.html"&gt;OEA体验 ：元数据编写&lt;/a&gt;中找到&lt;/p&gt;  &lt;p&gt;下面的代码可以使用OEAPropertyReference 来生成&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt;描&amp;#232;述? : 客&amp;#237;户&amp;#167;信?息￠.&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;see&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;类&amp;#224;库a对?应|的?数y据Y库a表&amp;#237; NT_Clcs_ClientInfo &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/see&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: gray"&gt;///&amp;lt;/summary&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;RootEntity&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Clientinfo &lt;/span&gt;: DemoEntity    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected &lt;/span&gt;Clientinfo() { }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RefProperty&lt;/span&gt;&amp;lt;Village&amp;gt; VillageRefProperty =    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;        &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Clientinfo&lt;/span&gt;&amp;gt;.RegisterRef(e =&amp;gt; e.Village, &lt;span style="color: #2b91af"&gt;ReferenceType&lt;/span&gt;.Normal);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public int &lt;/span&gt;VillageId    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefId(VillageRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefId(VillageRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;    &lt;span style="color: blue"&gt;public &lt;/span&gt;Village Village    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetRefEntity(VillageRefProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;        &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetRefEntity(VillageRefProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;    &lt;span style="color: blue"&gt;#endregion&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;下面的是小区表的配置类&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VillageConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;   {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;       &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigMeta()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;       {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;           &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigMeta();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;           Meta.MapTable().HasColumns(    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.ParentidProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvNameProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvPinyiProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvTypeProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvHeatingplantProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvHscuProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.BustypeProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;           &lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.ClientcountProperty    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;               );    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;       }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;       &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;       {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;           &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigView();    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;           View.HasTitle(&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvNameProperty).HasLabel(&lt;span style="color: #a31515"&gt;"小?区?名?称?"&lt;/span&gt;);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;           View.Property(&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;.CvNameProperty).HasLabel(&lt;span style="color: #a31515"&gt;"小?区?名?称?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.List | &lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Lookup);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;&amp;nbsp; }  &lt;/div&gt;  &lt;p&gt;自动生成数据库关联关系&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616443800.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616455130.png" width="743" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;三、支持树型实体（代码生成 OEATreeEntity ）&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 向小区下面还有楼栋和单元,我们看OEA如何实现&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616453951.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616467996.png" width="739" height="115" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;生成的代码如下：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;#region &lt;/span&gt;支&amp;#167;持?树&amp;#247;型&amp;#237;实&amp;#956;体?    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; TreeCodeProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.TreeCode);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;        [&lt;span style="color: #2b91af"&gt;Column&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public override string &lt;/span&gt;TreeCode    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;GetProperty(TreeCodeProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ SetProperty(TreeCodeProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Property&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;?&amp;gt; TreePIdProperty = &lt;span style="color: #2b91af"&gt;P&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Village&lt;/span&gt;&amp;gt;.Register(e =&amp;gt; e.TreePId);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;        [&lt;span style="color: #2b91af"&gt;Column&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public override int&lt;/span&gt;? TreePId    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(TreePIdProperty); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetProperty(TreePIdProperty, &lt;span style="color: blue"&gt;value&lt;/span&gt;); }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;        }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        &lt;span style="color: blue"&gt;public override bool &lt;/span&gt;SupportTree { &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return true&lt;/span&gt;; } }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;        &lt;span style="color: blue"&gt;#endregion&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;自动生成数据库关联关系&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616476228.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204071616496619.png" width="608" height="67" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;是不是很简单&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2436105.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/07/2436105.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/04/03/2431478.html</id><title type="text">OEA体验 ：元数据编写</title><summary type="text">一、摘要 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，以后我会慢慢完善这篇文章。 OEA 源码：OpenExpressApp：OEA框架 2.9 Pre-Alpha 源码公布 可以到周哥的博客中可以下到。 二、本文大纲 a、摘要。 b、配置数据库。 c、元数据结构。 d、元数据事件。 e、界面配置。 f、数据编辑。 j、编辑器。 三、配置数据库： 配置文件 1: &lt;connectionStrings&gt; 2: &lt;add name="DbMigra...</summary><published>2012-04-03T14:53:00Z</published><updated>2012-04-03T14:53:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/04/03/2431478.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/04/03/2431478.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我下面写的是我在使用OEA中用到的功能，当然还有好多现在还没有用到，以后我会慢慢完善这篇文章。&lt;/p&gt;    &lt;p&gt;OEA 源码：&lt;a href="http://www.cnblogs.com/zhoujg/archive/2012/03/31/2426318.html"&gt;OpenExpressApp：OEA框架 2.9 Pre-Alpha 源码公布&lt;/a&gt; 可以到周哥的博客中可以下到。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、配置数据库。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、元数据结构。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、元数据事件。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e、界面配置。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f、数据编辑。&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j、编辑器。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;三、配置数据库：&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;配置文件&lt;/p&gt;    &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt;1:  &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;2:  &lt;/span&gt;&lt;span style="color: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;DbMigrationHistory&lt;/span&gt;" &lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Data Source=LUOMG-PC;Initial Catalog=DbMigrationHistory;User ID=sa;Password=123456&lt;/span&gt;" &lt;span style="color: red"&gt;providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Data.SqlClient&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;3:  &lt;/span&gt;&lt;span style="color: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;OEA&lt;/span&gt;" &lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Data Source=LUOMG-PC;Initial Catalog=OEA;User ID=sa;Password=123456&lt;/span&gt;" &lt;span style="color: red"&gt;providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Data.SqlClient&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;4:  &lt;/span&gt;&lt;span style="color: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Demo&lt;/span&gt;" &lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Data Source=LUOMG-PC;Initial Catalog=Demo;User ID=sa;Password=123456&lt;/span&gt;" &lt;span style="color: red"&gt;providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Data.SqlClient&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;5:  &lt;/span&gt;&lt;span style="color: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;6:  &lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;实现代码&lt;/p&gt;  &lt;strong&gt;&lt;/strong&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;   &lt;span style="color: blue"&gt;public abstract class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DemoEntity &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Entity&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;   &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;       &lt;span style="color: blue"&gt;public static readonly string &lt;/span&gt;ConnectionString = &lt;span style="color: #a31515"&gt;"Demo"&lt;/span&gt;;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;       &lt;span style="color: blue"&gt;protected override string &lt;/span&gt;ConnectionStringSettingName    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;       {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;           &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;ConnectionString; }    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;       }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;   }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;四、元数据结构：&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;这里的代码以后都是自动生成了。&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;1:  &lt;/span&gt;&lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;Property&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt; CcGongredayProperty = P&amp;lt;Chargeannual&amp;gt;.Register(e =&amp;gt; e.CcGongreday);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;2:  &lt;/span&gt;       publicint CcGongreday     &lt;span style="line-height: 18px; color: #4f81bd"&gt;3:  &lt;/span&gt;       {     &lt;span style="line-height: 18px; color: #4f81bd"&gt;4:  &lt;/span&gt;           &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.GetProperty(CcGongredayProperty); }     &lt;span style="line-height: 18px; color: #4f81bd"&gt;5:  &lt;/span&gt;           &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetProperty(CcGongredayProperty, value); }     &lt;span style="line-height: 18px; color: #4f81bd"&gt;6:  &lt;/span&gt;       }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;7:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  &lt;p&gt;数据库会跟着换类型的，除非里面的数据不能转换为目标类型。     &lt;br /&gt;但是界面跟数据库是没什么关系的，主要还是跟实体类有关系。&lt;/p&gt;  &lt;p&gt;实体类是日期型的，界面应该是日期型控件。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;五、元数据事件：&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;在这里要实现的效果是&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204031210282442.png"&gt;&lt;img title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204031210292343.png" width="309" height="52" /&gt;&lt;/a&gt; 当用户选择供热结束时间自动计算供热天数，代码如下：&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 98.96%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; height: 254px; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;publicstaticreadonly ManagedProperty&amp;lt;DateTime&amp;gt; CcGongreendProperty = P&amp;lt;Chargeannual&amp;gt;.Register(e =&amp;gt; e.CcGongreend, &lt;span style="color: blue"&gt;new &lt;/span&gt;PropertyMetadata&amp;lt;DateTime&amp;gt;     &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;            PropertyChangedCallBack = (o, e) =&amp;gt; (o &lt;span style="color: blue"&gt;as &lt;/span&gt;Chargeannual).OnCcGongreendChanged(e),    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;        });    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;&lt;span style="color: blue"&gt;protected virtual void &lt;/span&gt;OnCcGongreendChanged(ManagedPropertyChangedEventArgs&amp;lt;DateTime&amp;gt; e)    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;            &lt;span style="color: green"&gt;//  在这里实现业务&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;&lt;span style="color: green"&gt;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;&lt;span style="color: green"&gt;            // TimeSpan ts = CcGongreend - CcGongrebegin;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;&lt;span style="color: green"&gt;            // this.CcGongreday = ts.Days;&lt;/span&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;&lt;span style="color: green"&gt;        &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;六、界面配置：&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120403121036570.png"&gt;&lt;img title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204031210389990.png" width="752" height="556" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;要实现界面属性自动管理，需要编写如下代码：&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100.6%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; height: 485px; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ChargeannualConfig &lt;/span&gt;: EntityConfig&amp;lt;Chargeannual&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigMeta()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigMeta();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        Meta.MapTable().HasColumns(    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;        Chargeannual.CcYearProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        Chargeannual.CcSwitchProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        Chargeannual.CcGongrebeginProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;        Chargeannual.CcGongreendProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;        Chargeannual.CcGongredayProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;        Chargeannual.CcDnabeginProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        Chargeannual.CcDnaproportionProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        Chargeannual.CcStopportionProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;        Chargeannual.CcFixedportionProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;        Chargeannual.CcGongjianProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;        Chargeannual.CcResidentProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;        Chargeannual.CcDishangProperty,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        Chargeannual.CcGongjian1Property,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;        Chargeannual.CcResident1Property,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;        Chargeannual.CcDishang1Property,    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;        Chargeannual.CcDateProperty    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;            );    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;七、数据编辑：&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/20120403225705168.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204032257072511.png" width="728" height="358" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;要实现界面编辑，需要编写如下代码，当然你也可以直接在空格中进行编辑。&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100.05%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; height: 670px; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;internal class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ChargeannualConfig &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;EntityConfig&lt;/span&gt;&amp;lt;Chargeannual&amp;gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;{    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;    &lt;span style="color: blue"&gt;protected override void &lt;/span&gt;ConfigView()    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;    {    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;.ConfigView();    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;        View.Property(Chargeannual.CcYearProperty).HasLabel(&lt;span style="color: #a31515"&gt;"收?费?年&amp;#234;度&amp;#232;"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;        View.Property(Chargeannual.CcSwitchProperty).HasLabel(&lt;span style="color: #a31515"&gt;"开a关?设&amp;#232;置?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        View.Property(Chargeannual.CcGongrebeginProperty).HasLabel(&lt;span style="color: #a31515"&gt;"供?热&amp;#232;开a始?时&amp;#177;间?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        View.Property(Chargeannual.CcGongreendProperty).HasLabel(&lt;span style="color: #a31515"&gt;"供?热&amp;#232;结&amp;#225;束?时&amp;#177;间?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;        View.Property(Chargeannual.CcGongredayProperty).HasLabel(&lt;span style="color: #a31515"&gt;"供?热&amp;#232;天&amp;#236;数y"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;        View.Property(Chargeannual.CcDnabeginProperty).HasLabel(&lt;span style="color: #a31515"&gt;"缔T纳&amp;#233;开a始?日?期&amp;#250;"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;        View.Property(Chargeannual.CcDnaproportionProperty).HasLabel(&lt;span style="color: #a31515"&gt;"缔T纳&amp;#233;金e比&amp;#232;例y"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        View.Property(Chargeannual.CcStopportionProperty).HasLabel(&lt;span style="color: #a31515"&gt;"停￡热&amp;#232;基&amp;#249;础?费?比&amp;#232;例y"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        View.Property(Chargeannual.CcFixedportionProperty).HasLabel(&lt;span style="color: #a31515"&gt;"固&amp;#236;定&amp;#168;热&amp;#232;费?比&amp;#232;例y"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;        View.Property(Chargeannual.CcGongjianProperty).HasLabel(&lt;span style="color: #a31515"&gt;"公?建&amp;#168;"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;        View.Property(Chargeannual.CcResidentProperty).HasLabel(&lt;span style="color: #a31515"&gt;"居&amp;#243;民?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;        View.Property(Chargeannual.CcDishangProperty).HasLabel(&lt;span style="color: #a31515"&gt;"底&amp;#215;商&amp;#236;"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;        View.Property(Chargeannual.CcGongjian1Property).HasLabel(&lt;span style="color: #a31515"&gt;"公?建&amp;#168;1"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;        View.Property(Chargeannual.CcResident1Property).HasLabel(&lt;span style="color: #a31515"&gt;"居&amp;#243;民?1"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;        View.Property(Chargeannual.CcDishang1Property).HasLabel(&lt;span style="color: #a31515"&gt;"底&amp;#215;商&amp;#236;1"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;        View.Property(Chargeannual.CcDateProperty).HasLabel(&lt;span style="color: #a31515"&gt;"CcDate"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;&amp;nbsp;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;    }    &lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;}    &lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;八、编辑器：&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204032257087047.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201204/201204032257103228.png" width="747" height="419" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;在&lt;/strong&gt;internal class ClientinfoConfig : EntityConfig&amp;lt;Clientinfo&amp;gt; 类中的protected override void ConfigView()加入如下代码&lt;/p&gt;  &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; height: 55px; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;    &lt;span style="line-height: 18px; color: #4f81bd"&gt;1:  &lt;/span&gt;View.Property(&lt;span style="color: #2b91af"&gt;Clientinfo&lt;/span&gt;.CcVillageProperty).HasLabel(&lt;span style="color: #a31515"&gt;"街?道&amp;#224;小?区?"&lt;/span&gt;).ShowIn(&lt;span style="color: #2b91af"&gt;ShowInWhere&lt;/span&gt;.Detail).UseEditor(&lt;span style="color: #2b91af"&gt;WPFEditorNames&lt;/span&gt;.Memo);    &lt;span style="line-height: 18px; color: #4f81bd"&gt;2:  &lt;/span&gt;&amp;nbsp;  &lt;/div&gt;  Clientinfo.CcVillageProperty==类.属性  在这里需要注意的是属性必须是string(字符串类型)，要不然系统会报错。  目前只支持大文本编辑其它的编辑器太多了做不完，所以我们在程序级别支持开发人员自定义自己的属性编辑器。  &amp;nbsp;&lt;/blockquote&gt;其他:&lt;p&gt;ManagedPropertyChangedSource.FromProperty 是什么意思?   &lt;br /&gt;e.Source 表示属性被变更是哪里引起的。   &lt;br /&gt;FromPresistence 表示这个属性正在被数据层设置。   &lt;br /&gt;FromUI 表示界面。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2431478.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/04/03/2431478.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/luomingui/archive/2012/02/11/2346345.html</id><title type="text">LiteORM学习七：远程对象访问Socket篇</title><summary type="text">一、摘要 在上篇我们已经讲了远程访问对象，现在我们来看看他的内部是怎么实现的，本次远程对象访问用Socket实现。 二、本文大纲 a、摘要。 b、本文大纲。 c、回顾。 d、Socket设计。 e、其他。 三、回顾 1：在上篇LiteORM学习六：远程对象中我们说到在实体类上加入DataEntity就可以在网络中访问了，那具体是有什么技术呢，有那几种实现方式.WebSerivce...</summary><published>2012-02-11T02:21:00Z</published><updated>2012-02-11T02:21:00Z</updated><author><name>罗敏贵</name><uri>http://www.cnblogs.com/luomingui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/luomingui/archive/2012/02/11/2346345.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/luomingui/archive/2012/02/11/2346345.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、摘要&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在上篇我们已经讲了远程访问对象，现在我们来看看他的内部是怎么实现的，本次远程对象访问用Socket实现。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;二、本文大纲&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a、摘要。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b、本文大纲。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c、回顾。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d、Socket设计。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e、其他。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;三、回顾&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;1：在上篇&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/01/07/2315699.html"&gt;LiteORM学习六：远程对象&lt;/a&gt;中我们说到在实体类上加入DataEntity就可以在网络中访问了，那具体是有什么技术呢，有那几种实现方式.WebSerivce,wcf,socket,&lt;a href="http://www.cnblogs.com/luomingui/tag/Remoting/"&gt;Remoting&lt;/a&gt; 。&lt;/p&gt; &lt;p&gt;2：在上篇&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/01/07/2315699.html"&gt;LiteORM学习六：远程对象&lt;/a&gt;中我们只说到了如何使用远程对象。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;四、Socket设计&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 在OHA中使用了SOCKET技术进行远程访问业务对象的方法。&lt;/p&gt; &lt;p&gt;1：在上篇中我们说到在实体类上加入DataEntity就可以在网络中访问了，在客户端和服务器端都有一个SocketPortal 这里面包含了远程访问的方法和属性。&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/01/07/2315699.html" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://images.cnblogs.com/cnblogs_com/luomingui/QQ%E6%88%AA%E5%9B%BE20120107111103.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;2:&amp;nbsp; 在OHA中也和Csla一样使用固定方法和扩展方法，两种方式实现 如图&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020399129.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020399718.png" width="437" height="468"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;使用了固定的几个事件，他们分别是 DataPortal_Create DataPortal_Fetch DataPortal_Insert&amp;nbsp; DataPortal_Update DataPortal_Delete 我们还提供了&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020393099.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020399751.png" width="195" height="59"&gt;&lt;/a&gt; 扩展接口，使用者可以实现这个接口就可以自定义事件。&lt;/p&gt; &lt;p&gt;3：Socket设计图&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020408148.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020414933.png" width="244" height="172"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;大家看到了在客户端和服务器端都有一个Socket数据门户，这个主要使用Socket来作为远程对象的访问。&lt;/p&gt; &lt;p&gt;在服务器端：直接启动Socket数据门户就是可以了，默认情况下使用本机做为服务器，&lt;font color="#ff0000"&gt;目前还没有实现指定IP来作为服务器&lt;/font&gt;。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020415282.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201202/20120211102042854.png" width="363" height="224"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Socket主要做两件事情，一个负责连接管理，一个是负责业务处理。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020428936.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/luomingui/201202/201202111020424509.png" width="674" height="39"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;server_OnAcceptClient 事件负责连接管理&lt;/p&gt; &lt;p&gt;server_OnReceiveData 事件负责业务处理 &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;五、其他&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 在OHA中使用了SOCKET技术进行远程访问业务对象的方法。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 1：加入日志。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 2：分布式部署，多服务器部署方案。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 3：可以随意指定一台电脑作为服务器。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 4：使用者可以自己扩展。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 5：加强设计模式学习，这个是对我自己说的。需要深入系统的学习Socket以完善这个设计。&lt;/p&gt; &lt;p&gt;&amp;nbsp; 6：希望高手们多提提意见哦。&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/luomingui/aggbug/2346345.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/luomingui/archive/2012/02/11/2346345.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
