微型项目实践(1):用XML描述实体
2008-05-10 13:03
411 查看
系统设计的第一步当然是分析需求,目前能够想到的就是对日志的管理,恩……再加上一个分类好了,大体就是这样子:
我们使用一个XML来描述这两个实体:
这个XML很容易看懂,它的Schema定义在“http://it.ouc.edu.cn/EntityDescription/V2”中,根节点表示这个XML定义的是实体的集合(Entities)。每一个实体包含很多数据字段,字段有标题、名称、类型等属性,需要注意的是,这里的数据字段不表示数据库设计,也不表示类的设计,只是实体的业务逻辑定义。
使用XML描述业务数据有很多好处:
是与具体实现无关。正如前面说的,该XML描述的是业务实体,不是数据库表,也不是C#类,所以它是与具体实现无关的。我们需要的仅仅是描述系统的业务逻辑所包含的数据有哪些,以及他们的相互关系是什么。所以这种描述方法甚至可以推广到其它平台。
无二意性的。与需求文档不同,XML描述的定义是精确的,不会因为措辞的不同造成人们不同的理解。
是可以被版本控制的。XML是纯文本的,它被包含在项目的Solution中,当然会被版本控制工具一并捕获。版本控制的好处在于不同的版本的代码对应不同阶段的业务需求,这直接表示为不同的数据库设计,因此避免了团队成员修改了数据库而其它成员的代码不能运行的问题。
使项目自动化。有了描述实体的XML能干什么?很多:生成数据库的建库脚本,生成实体C#类,生成测试数据,甚至可以用于生成文档和项目手册!这可以大大提高系统的开发效率,规模越大的系统,自动化的优势越明显!
是同步的。文档的更新与同步经常成为一个令人头疼的问题。而这个XML因为是系统框架自动化的依据,所以修改系统需求和设计时,这个XML是被同步修改的,所以这个文档总是可以被作为了解系统设计的最新资料。
与客户交流的工具。就我的经验来看,大部分客户其实是想了解系统设计的,这样让他们更有安全感,也使项目的设计更符合需求。但是,数据库设计通常包含了太多的实现细节,不适合直接展示给客户,代码就跟不用说了,而这种纯粹描述业务的XML则非常合适。当然,一定的讲解是必须的,但剩下的写文档的工作。:)
因为以上这些优势,所以我总是以这个XML作为项目的起点。当然,XML的格式也可以根据项目的不同,略做修改。
当然,这个东西有些简单了,但是随着开发的进一步的进行,我们的实体数据也会逐渐增加,而增量开发、应对变化是系统设计中要解决的重要问题!实际项目的XML最终会非常复杂,这里有一个实际项目的实体XML文件,供大家参考。
当前项目的代码从这里下载。其中YD(我的名字的所写,呵呵)类库是我常用的一些代码,主要就是基于XML的代码生成器以及XML的Schema(有了它,VS.Net 2008就可以在编辑XML时启动智能感知,非常方便。)本文先到这里,下一篇中,我们来看这个XML的具体用法。
<?xml version="1.0" encoding="utf-8" ?>
- <!--
-->
f(clean);
- <Entities xmlns="http://it.ouc.edu.cn/DatabaseDescription/V2">
- <Entity title="用户角色" name="UserRole" module="Users">
<Item title="名称" name="Name" type="text" />
<Item title="类型" name="Type" type="enum" enumName="UserRoleType" />
<Item title="权限" name="Power" type="entity" entityName="Power" require="false" />
</Entity>
- <Entity title="用户" name="User" module="Users">
<Item title="用户角色" name="UserRole" type="entity" entityName="UserRole" />
<Item title="登录名" name="LoginID" type="text" />
<Item title="用户名" name="Name" type="text" />
<Item title="用户名拼音首字母" name="NameSpell" type="text" />
<Item title="密码" name="Password" type="text" />
<Item title="电子邮件" name="Email" type="text" require="false" />
<Item title="联系电话" name="Phone" type="text" require="false" />
<Item title="是否超级用户" name="IsSuper" type="bool" />
<Item title="是否自定义权限" name="IsCustomPower" type="bool" />
<Item title="权限" name="Power" type="entity" entityName="Power" require="false" />
</Entity>
- <Entity title="权限" name="Power" module="Users">
<Item title="权限" name="Powers" type="text" description="以逗号分隔,能包含一百个权限项目" property="none" />
</Entity>
- <Entity title="专家" name="Expert" module="Users">
<Item title="对应用户" name="User" type="entity" entityName="User" />
<Item title="工作证号" name="Number" type="text" />
<Item title="姓名" name="Name" type="text" />
<Item title="姓名拼音缩写" name="NameSpell" type="text" />
<Item title="性别" name="Sex" type="enum" enumName="SexType" />
<Item title="出生日期" name="Birthday" type="datetime" require="false" />
<Item title="民族" name="Nation" type="text" />
<Item title="政治面貌" name="Policy" type="text" />
<Item title="身份证号" name="IDCardNumber" type="text" />
<Item title="学历" name="AcademyDegree" type="text" />
<Item title="专长" name="Specialty" type="text" />
<Item title="职称" name="Post" type="text" />
<Item title="是否博导" name="IsDoctorDirector" type="bool" require="false" />
<Item title="是否院士" name="IsAcademician" type="bool" require="false" />
<Item title="职务" name="Occupation" type="text" />
<Item title="所在学院" name="College" type="text" />
<Item title="所在部门" name="Department" type="entity" entityName="Department" require="false" />
<Item title="所在学院2" name="College2" type="text" />
<Item title="所在系所2" name="Department2" type="text" />
<Item title="移动电话" name="MobilePhone" type="text" />
<Item title="办公电话" name="OfficePhone" type="text" />
<Item title="家庭电话" name="HomePhone" type="text" />
<Item title="传真" name="Fax" type="text" />
<Item title="通讯地址" name="Address" type="text" />
<Item title="邮政编码" name="Zip" type="text" />
<Item title="电子邮件" name="Email" type="text" />
<Item title="所学专业代码" name="MajorCode" type="text" />
<Item title="所学专业名称" name="MajorName" type="text" />
<Item title="从事专业代码1" name="ResearchCode1" type="text" />
<Item title="从事专业名称1" name="ResearchName1" type="text" />
<Item title="从事专业代码2" name="ResearchCode2" type="text" />
<Item title="从事专业名称2" name="ResearchName2" type="text" />
<Item title="从事专业代码3" name="ResearchCode3" type="text" />
<Item title="从事专业名称3" name="ResearchName3" type="text" />
<Item title="外语语种1" name="Language1" type="text" />
<Item title="外语语种2" name="Language2" type="text" />
<Item title="熟练程度1" name="LanguageLevel1" type="text" />
<Item title="熟练程度2" name="LanguageLevel2" type="text" />
<Item title="社会兼职" name="SocietyPost" type="text" />
<Item title="工作简历" name="WorkExperience" type="longtext" />
<Item title="科研简历" name="ResearchExperience" type="longtext" />
</Entity>
- <Entity title="部门" name="Department" module="Users">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="代码" name="Code" type="text" require="true" />
</Entity>
- <Entity name="Project" title="项目" module="Projects">
<Item title="流水号" name="SerialNumber" type="text" />
<Item title="项目编号" name="Number" type="text" />
<Item title="项目名称" name="Name" type="text" />
<Item title="项目名称拼音首字母" name="NameSpell" type="text" />
<Item title="项目负责人" name="Principal" type="entity" entityName="Expert" require="false" />
<Item title="项目负责姓名" name="PrincipalName" type="text" property="get" />
<Item title="项目负责工作证号" name="PrincipalNumber" type="text" property="set" />
<Item title="项目分级" name="Level" type="enum" enumName="ProjectLevel" />
<Item title="是否横向项目" name="IsHorizontal" type="bool" />
<Item title="基地名称" name="Base" type="entity" entityName="Base" require="false" />
<Item title="学科代码" name="SubjectCode" type="text" />
<Item title="研究属性" name="ResearchType" type="text" />
<Item title="是否保密" name="IsSecret" type="bool" />
<Item title="起始年月" name="StartDate" type="datetime" require="false" />
<Item title="终止年月" name="EndDate" type="datetime" require="false" />
<Item title="合作方式" name="CooperationType" type="text" />
<Item title="承担单位" name="Unit" type="text" />
<Item title="任务来源" name="TaskComingFrom" type="text" />
<Item title="公司所在地" name="CorporationPlace" type="text" />
<Item title="项目状态" name="State" type="enum" enumName="ProjectState" />
<Item title="建立人" name="Creator" type="text" />
<Item title="建立时间" name="CreateDate" type="datetime" require="false" />
<Item title="更新时间" name="UpdateTime" type="datetime" require="false" />
<Item title="备注" name="Remark" type="text" />
</Entity>
- <Entity title="项目成员" name="ProjectMember" module="Projects">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="专家姓名" name="Name" type="text" property="get" />
<Item title="工作证号" name="ExpertNumber" type="text" property="get" />
<Item title="位次" name="Order" type="int" require="false" />
<Item title="子课题号" name="TaskNo" type="text" />
<Item title="子课题名称" name="TaskName" type="text" />
</Entity>
- <Entity title="项目信息—分类" name="ProjectInfo_Type" module="Type">
<Item title="对应的项目" name="Project" type="entity" entityName="Project" />
<Item title="项目级别" name="Rank" type="entity" entityName="ProjectRank" require="false" />
<Item title="项目类别" name="Type" type="entity" entityName="ProjectType" require="false" />
<Item title="资助领域" name="SupportField" type="entity" entityName="ProjectSupportField" require="false" />
<Item title="资助子领域" name="SupportSubField" type="entity" entityName="ProjectSupportSubField" require="false" />
<Item title="资助类别" name="SupportCategory" type="entity" entityName="ProjectSupportCategory" require="false" />
<Item title="项目级别" name="RankName" type="text" property="none" />
<Item title="项目类别" name="TypeName" type="text" property="none" />
<Item title="资助领域" name="SupportFieldName" type="text" property="none" />
<Item title="资助子领域" name="SupportSubFieldName" type="text" property="none" />
<Item title="资助类别" name="SupportCategoryName" type="text" property="none" />
</Entity>
- <Entity title="项目级别" name="ProjectRank" module="Type">
<Item title="级别名称" name="Name" type="text" />
<Item title="是否横向项目" name="IsHorizontal" type="bool" property="get" />
</Entity>
- <Entity title="项目类别" name="ProjectType" module="Type">
<Item title="对应级别" name="ProjectRank" type="entity" entityName="ProjectRank" />
<Item title="类别名称" name="Name" type="text" />
<Item title="类别简称" name="ShortName" type="text" />
<Item title="专管部门" name="Administration" type="text" />
<Item title="分类代码" name="Code" type="text" />
<Item title="是否预算制" name="IsBudget" type="bool" require="true" />
</Entity>
- <Entity title="项目资助类别" name="ProjectSupportCategory" module="Type">
<Item title="对应类别" name="ProjectType" type="entity" entityName="ProjectType" />
<Item title="资助类别名称" name="Name" type="text" />
</Entity>
- <Entity title="项目资助领域" name="ProjectSupportField" module="Type">
<Item title="对应类别" name="ProjectType" type="entity" entityName="ProjectType" />
<Item title="资助领域名称" name="Name" type="text" />
</Entity>
- <Entity title="项目资助子领域" name="ProjectSupportSubField" module="Type">
<Item title="对应资助领域" name="ProjectSupportField" type="entity" entityName="ProjectSupportField" />
<Item title="资助子领域名称" name="Name" type="text" />
</Entity>
- <Entity title="项目信息—经费" name="ProjectInfo_Fund" module="Fund">
<Item title="对应的项目" name="Project" type="entity" entityName="Project" />
<Item title="资金来源" name="FundFrom" type="text" />
<Item title="来款单位" name="FundFromUnit" type="text" />
<Item title="来款单位地址" name="FundFromUnitAddress" type="text" />
<Item title="总经费" name="FundTotal" type="int" />
<Item title="合同额" name="FundContract" type="int" />
<Item title="计划外拨经费" name="FundPlanOutTotal" type="int" require="false" />
<Item title="计划出海费" name="FundPlanOversea" type="int" require="false" />
<Item title="计划硬件费" name="FundPlanHardware" type="int" require="false" />
<Item title="已到经费" name="FundReceived" type="int" />
<Item title="已校内分配" name="FundAlreadyIn" type="int" />
<Item title="已外拨经费" name="FundAlreadyOut" type="int" />
<Item title="已分配出海费" name="FundAlreadyOversea" type="int" />
<Item title="已分配硬件费" name="FundAlreadyHardware" type="int" />
<Item title="校内管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协管理费" name="OverheadExpensesOut" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
</Entity>
- <Entity title="项目付款计划" name="PayPlanItem" module="Fund">
<Item title="对应项目经费" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" />
<Item title="到款时间" name="DateTime" type="datetime" />
<Item title="到款数额" name="Amount" type="int" />
</Entity>
- <Entity title="经费到账记录" name="Finance" module="Fund">
<Item title="流水号" name="SerialNumber" type="text" description="用于保存上一个数据库版本中的该信息,无逻辑意义" />
<Item title="描述" name="Description" type="text" />
<Item title="到款日期" name="ReceivedDate" type="datetime" />
<Item title="凭单号" name="VoucherNumber" type="text" />
<Item title="到款金额" name="Amount" type="int" />
<Item title="已下拨经费" name="DescendAmount" type="int" />
</Entity>
- <Entity title="项目经费成员" name="FundMember" module="Fund">
<Item title="对应项目经费信息" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" require="false" />
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="专家姓名" name="ExpertName" type="text" property="get" />
<Item title="工作证号" name="ExpertNumber" type="text" property="get" />
<Item title="帐本号" name="AccountBookNumber" type="text" />
</Entity>
- <Entity title="下拨经费记录" name="FundDescend" module="Fund">
<Item title="对应经费到帐" name="Finance" type="entity" entityName="Finance" />
<Item title="对应项目" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" />
<Item title="下拨时间" name="DescendDateTime" type="datetime" />
<Item title="下拨金额" name="Amount" type="int" />
<Item title="下拨人" name="Operator" type="text" />
<Item title="是否以完成分配" name="IsAllocated" type="bool" require="true" />
</Entity>
- <Entity title="经费分配记录" name="FundAllocation" module="Fund">
<Item title="对应经费下拨" name="FundDescend" type="entity" entityName="FundDescend" require="false" />
<Item title="金额" name="Amount" type="int" description="等于下拨的金额" />
<Item title="对应的项目名称" name="ProjectName" type="text" />
<Item title="校内分配" name="AllocationIn" type="int" />
<Item title="外协分配" name="AllocationOut" type="int" />
<Item title="出海费" name="AllocationOversea" type="int" />
<Item title="硬件费" name="AllocationHardware" type="int" />
<Item title="校内分配管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协分配管理费" name="OverheadExpensesOut" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="提交分配时间" name="SubmitDateTime" type="datetime" require="false" />
<Item title="负责人" name="Principle" type="text" />
<Item title="状态" name="CensorState" type="enum" enumName="CensorState" />
<Item title="审核人" name="Censor" type="text" />
<Item title="审核时间" name="CensorDateTime" type="datetime" require="false" />
<Item title="审核意见" name="CensorRemark" type="text" />
</Entity>
- <Entity title="经费凭单" name="Voucher" module="Fund">
<Item title="对应经费分配" name="FundAllocation" type="entity" entityName="FundAllocation" />
<Item title="对应经费成员" name="FundMember" type="entity" entityName="FundMember" />
<Item title="凭单号" name="VoucherNumber" type="text" />
<Item title="账本号" name="AccountBookNumber" type="text" />
<Item title="校内分配" name="AllocationIn" type="int" />
<Item title="外协分配" name="AllocationOut" type="int" />
<Item title="硬件费" name="AllocationHardware" type="int" />
<Item title="出海费" name="AllocationOversea" type="int" />
<Item title="校内分配管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协分配管理费" name="OverheadExpensesOut" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="是否已打印" name="IsPrinted" type="bool" require="true" />
<Item title="打印时间" name="PrintTime" type="datetime" require="false" />
</Entity>
- <Entity title="凭单项目-校内分配" name="VoucherItemIn" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="凭单项目-外协分配" name="VoucherItemOut" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
<Item title="企业名称" name="Corporation" type="text" />
</Entity>
- <Entity title="凭单项目-出海费" name="VoucherItemOversea" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="凭单项目-硬件费" name="VoucherItemHardware" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="合同" name="Contract" module="Documents">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="合同编号" name="ContractNumber" type="text" />
<Item title="合同类型" name="Type" type="enum" enumName="ContractType" />
<Item title="提交日期" name="SubmitDateTime" type="datetime" require="false" />
<Item title="状态" name="State" type="enum" enumName="CensorState" />
<Item title="合同内容" name="Content" type="bytes" />
</Entity>
- <Entity title="文档" name="Document" module="Documents">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="文档名称" name="Name" type="text" />
<Item title="提交人" name="Author" type="text" />
<Item title="提交日期" name="SubmitDateTime" type="datetime" require="false" />
<Item title="文档内容" name="Content" type="bytes" require="false" />
<Item title="状态" name="State" type="enum" enumName="CensorState" />
<Item title="审核人" name="Censor" type="text" />
<Item title="审核日期" name="CensorDateTime" type="datetime" require="false" />
<Item title="是否必须" name="IsRequire" type="bool" />
</Entity>
- <Entity title="系统设置" name="SystemSetting" module="Framework">
<Item title="外协经费在总经费中最大比例" name="FundOutRatio" type="int" description="表示百分比" />
</Entity>
- <Entity title="计数器" name="Count" module="Framework">
<Item title="年份" name="Year" type="int" />
<Item title="审核的项目数目" name="Project" type="int" />
<Item title="审核的合同数目" name="Contract" type="int" />
<Item title="横向凭单数目" name="HorizontalVoucher" type="int" />
<Item title="纵向凭单数目" name="VerticalVoucher" type="int" />
</Entity>
- <Entity title="提示文本" name="NoticeText" module="Framework">
<Item title="值" name="Value" type="text" description="标题即提示文本的内容" />
<Item title="缩写" name="ShortKey" type="text" description="拼音首字母" />
<Item title="提示文本类型" name="Type" type="enum" enumName="NoticeTextType" />
</Entity>
- <Entity title="键值对" name="KeyValues" module="Framework">
<Item title="键" name="Key" type="text" />
<Item title="值" name="Value" type="text" />
<Item title="类型" name="Type" type="enum" enumName="KeyValueType" />
</Entity>
- <Entity title="短消息" name="Message" module="Framework">
<Item title="发送人" name="Sender" type="entity" entityName="User" require="false" />
<Item title="发送人姓名" name="SenderName" type="text" require="true" />
<Item title="收信人" name="Receiver" type="entity" entityName="User" />
<Item title="标题" name="Title" type="text" require="true" />
<Item title="内容" name="Content" type="longtext" require="false" />
<Item title="发送时间" name="DateTime" type="datetime" require="true" />
<Item title="是否已读" name="IsRead" type="bool" require="true" />
</Entity>
- <Entity title="日志" name="Log" module="Framework">
<Item title="时间" name="DateTime" type="datetime" require="true" />
<Item title="用户" name="User" type="text" require="true" />
<Item title="操作" name="Action" type="text" require="true" />
<Item title="描述" name="Description" type="text" require="false" />
</Entity>
- <Entity title="基地" name="Base" module="Bases">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="地址" name="Address" type="text" require="false" />
<Item title="邮编" name="Zip" type="text" require="false" />
<Item title="电话" name="Phone" type="text" require="false" />
<Item title="传真" name="Fax" type="text" require="false" />
<Item title="主管部门" name="Administration" type="text" require="false" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="负责人" name="Director" type="entity" entityName="Expert" require="false" />
<Item title="负责人姓名" name="DirectorName" type="text" property="get" />
<Item title="负责人工作证号" name="DirectorNumber" type="text" property="set" />
<Item title="学术负责人" name="AcademyDirector" type="entity" entityName="Expert" require="false" />
<Item title="学术负责人姓名" name="AcademyDirectorName" type="text" property="get" />
<Item title="学术负责人工作证号" name="AcademyDirectorNumber" type="text" property="set" />
</Entity>
- <Entity title="获奖情况" name="Award" module="Awards">
<Item title="奖项名称" name="Name" type="text" require="true" />
<Item title="获奖年份" name="Year" type="int" require="false" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="等级" name="Class" type="text" require="false" />
<Item title="对应项目" name="Project" type="entity" entityName="Project" require="false" />
<Item title="对应项目名称" name="ProjectName" type="text" require="false" />
<Item title="简介" name="Introduction" type="longtext" require="false" />
</Entity>
- <Entity title="获奖人" name="AwardWinner" module="Awards">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
</Entity>
- <Entity title="专利" name="Patent" module="Patents">
<Item title="专利号" name="Number" type="text" require="true" />
<Item title="名称" name="Name" type="text" require="true" />
<Item title="申请时间" name="ApplicationDateTime" type="datetime" require="false" />
<Item title="授权时间" name="AuthorizeDateTime" type="datetime" require="false" />
<Item title="类型" name="Type" type="enum" enumName="PatentType" require="true" />
<Item title="简介" name="Introduction" type="text" require="false" />
</Entity>
- <Entity title="专利发明人" name="PatentInventer" module="Patents">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
</Entity>
- <Entity title="论文" name="Paper" module="Papers">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="编号" name="Number" type="text" require="true" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="期刊" name="Magazine" type="text" require="true" />
<Item title="影响因子" name="InfluenceFactor" type="int" require="true" description="精确到小数点后第四位" />
<Item title="文档编号" name="DocumentNumber" type="text" require="true" />
<Item title="期/卷" name="Volume" type="text" require="false" />
<Item title="起始页码" name="StartPage" type="int" require="true" />
<Item title="终止页码" name="EndPage" type="int" require="true" />
<Item title="页数" name="Page" type="int" require="true" />
<Item title="发表日期" name="PublishDate" type="datetime" require="true" />
<Item title="摘要" name="Abstract" type="longtext" require="false" />
<Item title="ISBN" name="Isbn" type="text" require="false" />
<Item title="关键字" name="Keywords" type="text" require="false" />
</Entity>
- <Entity title="论文作者" name="PaperAuthor" module="Papers">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
<Item title="是否通讯作者" name="IsLinkman" type="bool" require="true" />
</Entity>
- <Entity title="论文对应的项目" name="PaperProject" module="Papers">
<Item title="论文" name="Paper" type="entity" entityName="Paper" require="true" />
<Item title="对应项目" name="Project" type="entity" entityName="Project" require="false" />
<Item title="项目名称" name="ProjectName" type="text" require="true" />
</Entity>
</Entities>
我们使用一个XML来描述这两个实体:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Entities xmlns="http://it.ouc.edu.cn/EntityDescription/V2">
3: <Entity title="日志" name="Blog" module="Blogs">
4: <Item title="标题" name="Title" type="text" require="true"/>
5: <Item title="内容" name="Content" type="longtext" require="false"/>
6: <Item title="所属分类" name="BlogClass" type="entity" entityName="BlogClass" require="false"/>
7: <Item title="创建时间" name="CreateDateTime" type="datetime" require="true"/>
8: <Item title="更新时间" name="UpdateDateTime" type="datetime" require="true"/>
9: </Entity>
10: <Entity title="日志分类" name="BlogClass" module="Blogs">
11: <Item title="名称" name="Name" type="text" require="true"/>
12: <Item title="描述" name="Description" type="text" require="false"/>
13: </Entity>
14: </Entities>
这个XML很容易看懂,它的Schema定义在“http://it.ouc.edu.cn/EntityDescription/V2”中,根节点表示这个XML定义的是实体的集合(Entities)。每一个实体包含很多数据字段,字段有标题、名称、类型等属性,需要注意的是,这里的数据字段不表示数据库设计,也不表示类的设计,只是实体的业务逻辑定义。
使用XML描述业务数据有很多好处:
是与具体实现无关。正如前面说的,该XML描述的是业务实体,不是数据库表,也不是C#类,所以它是与具体实现无关的。我们需要的仅仅是描述系统的业务逻辑所包含的数据有哪些,以及他们的相互关系是什么。所以这种描述方法甚至可以推广到其它平台。
无二意性的。与需求文档不同,XML描述的定义是精确的,不会因为措辞的不同造成人们不同的理解。
是可以被版本控制的。XML是纯文本的,它被包含在项目的Solution中,当然会被版本控制工具一并捕获。版本控制的好处在于不同的版本的代码对应不同阶段的业务需求,这直接表示为不同的数据库设计,因此避免了团队成员修改了数据库而其它成员的代码不能运行的问题。
使项目自动化。有了描述实体的XML能干什么?很多:生成数据库的建库脚本,生成实体C#类,生成测试数据,甚至可以用于生成文档和项目手册!这可以大大提高系统的开发效率,规模越大的系统,自动化的优势越明显!
是同步的。文档的更新与同步经常成为一个令人头疼的问题。而这个XML因为是系统框架自动化的依据,所以修改系统需求和设计时,这个XML是被同步修改的,所以这个文档总是可以被作为了解系统设计的最新资料。
与客户交流的工具。就我的经验来看,大部分客户其实是想了解系统设计的,这样让他们更有安全感,也使项目的设计更符合需求。但是,数据库设计通常包含了太多的实现细节,不适合直接展示给客户,代码就跟不用说了,而这种纯粹描述业务的XML则非常合适。当然,一定的讲解是必须的,但剩下的写文档的工作。:)
因为以上这些优势,所以我总是以这个XML作为项目的起点。当然,XML的格式也可以根据项目的不同,略做修改。
当然,这个东西有些简单了,但是随着开发的进一步的进行,我们的实体数据也会逐渐增加,而增量开发、应对变化是系统设计中要解决的重要问题!实际项目的XML最终会非常复杂,这里有一个实际项目的实体XML文件,供大家参考。
当前项目的代码从这里下载。其中YD(我的名字的所写,呵呵)类库是我常用的一些代码,主要就是基于XML的代码生成器以及XML的Schema(有了它,VS.Net 2008就可以在编辑XML时启动智能感知,非常方便。)本文先到这里,下一篇中,我们来看这个XML的具体用法。
<?xml version="1.0" encoding="utf-8" ?>
- <!--
根节点的命名空间对应版本。 Entitis下可能包含两种节点:Entity,Item。 1,Entity:表示实体,如果Entity节点的hasmany属性为true,则对应表,否则只表示分类。根节点下的Entity节点的hasmany属性固定为true,即对应表。 2,Item:必须从属于一个Entity下,表示一个属性 Entity包含的属性 1,name:该实体的名称,必须存在。对应数据库表名。 2,title:该实体的可视化名称,必须存在。 3,module:实体所属的模块,必须存在 4,hasmany:是否是一对多关系。可能的取值为true|falsh,默认为false。当值为true时对应表,否则只对应分类。根节点下的Entity节点的hasmany属性固定为true,即对应表。 Item下每一个节点可能包含的属性: 1,name:该属性的名称,必须存在。对应数据库表名。同一个表的属性名不能重复。 2,title:该信息的可视化名称,必须存在。 3,type:类型,必须存在,可能的取值为: entity:实体,即该列对应其他的业务实体,需要提供entityName属性。 enum:对应枚举,需要提供enumName属性。 int:整型。 text:文本,表示长度小于100个汉字的信息。 longtext:长文本,长度不限。 datetime:日期和时间。 bool:是否。 bytes:二进制流。 guid:全球统一标识。 4,enumName:对应的枚举名称,仅当字段类型是enum时有效。 5,entityName:对应的实体,仅当字段类型是entity时有效。 6,property:所生成的代码的属性。可能的取值有(默认为both): get:只有get属性。 set:只有set属性。 both:同时包含get和set属性。 none:两种属性都没有(不生成该属性)。 7,require:是否必填属性,可能的取值为true|false,默认为true。 8,description:说明。
-->
f(clean);
- <Entities xmlns="http://it.ouc.edu.cn/DatabaseDescription/V2">
- <Entity title="用户角色" name="UserRole" module="Users">
<Item title="名称" name="Name" type="text" />
<Item title="类型" name="Type" type="enum" enumName="UserRoleType" />
<Item title="权限" name="Power" type="entity" entityName="Power" require="false" />
</Entity>
- <Entity title="用户" name="User" module="Users">
<Item title="用户角色" name="UserRole" type="entity" entityName="UserRole" />
<Item title="登录名" name="LoginID" type="text" />
<Item title="用户名" name="Name" type="text" />
<Item title="用户名拼音首字母" name="NameSpell" type="text" />
<Item title="密码" name="Password" type="text" />
<Item title="电子邮件" name="Email" type="text" require="false" />
<Item title="联系电话" name="Phone" type="text" require="false" />
<Item title="是否超级用户" name="IsSuper" type="bool" />
<Item title="是否自定义权限" name="IsCustomPower" type="bool" />
<Item title="权限" name="Power" type="entity" entityName="Power" require="false" />
</Entity>
- <Entity title="权限" name="Power" module="Users">
<Item title="权限" name="Powers" type="text" description="以逗号分隔,能包含一百个权限项目" property="none" />
</Entity>
- <Entity title="专家" name="Expert" module="Users">
<Item title="对应用户" name="User" type="entity" entityName="User" />
<Item title="工作证号" name="Number" type="text" />
<Item title="姓名" name="Name" type="text" />
<Item title="姓名拼音缩写" name="NameSpell" type="text" />
<Item title="性别" name="Sex" type="enum" enumName="SexType" />
<Item title="出生日期" name="Birthday" type="datetime" require="false" />
<Item title="民族" name="Nation" type="text" />
<Item title="政治面貌" name="Policy" type="text" />
<Item title="身份证号" name="IDCardNumber" type="text" />
<Item title="学历" name="AcademyDegree" type="text" />
<Item title="专长" name="Specialty" type="text" />
<Item title="职称" name="Post" type="text" />
<Item title="是否博导" name="IsDoctorDirector" type="bool" require="false" />
<Item title="是否院士" name="IsAcademician" type="bool" require="false" />
<Item title="职务" name="Occupation" type="text" />
<Item title="所在学院" name="College" type="text" />
<Item title="所在部门" name="Department" type="entity" entityName="Department" require="false" />
<Item title="所在学院2" name="College2" type="text" />
<Item title="所在系所2" name="Department2" type="text" />
<Item title="移动电话" name="MobilePhone" type="text" />
<Item title="办公电话" name="OfficePhone" type="text" />
<Item title="家庭电话" name="HomePhone" type="text" />
<Item title="传真" name="Fax" type="text" />
<Item title="通讯地址" name="Address" type="text" />
<Item title="邮政编码" name="Zip" type="text" />
<Item title="电子邮件" name="Email" type="text" />
<Item title="所学专业代码" name="MajorCode" type="text" />
<Item title="所学专业名称" name="MajorName" type="text" />
<Item title="从事专业代码1" name="ResearchCode1" type="text" />
<Item title="从事专业名称1" name="ResearchName1" type="text" />
<Item title="从事专业代码2" name="ResearchCode2" type="text" />
<Item title="从事专业名称2" name="ResearchName2" type="text" />
<Item title="从事专业代码3" name="ResearchCode3" type="text" />
<Item title="从事专业名称3" name="ResearchName3" type="text" />
<Item title="外语语种1" name="Language1" type="text" />
<Item title="外语语种2" name="Language2" type="text" />
<Item title="熟练程度1" name="LanguageLevel1" type="text" />
<Item title="熟练程度2" name="LanguageLevel2" type="text" />
<Item title="社会兼职" name="SocietyPost" type="text" />
<Item title="工作简历" name="WorkExperience" type="longtext" />
<Item title="科研简历" name="ResearchExperience" type="longtext" />
</Entity>
- <Entity title="部门" name="Department" module="Users">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="代码" name="Code" type="text" require="true" />
</Entity>
- <Entity name="Project" title="项目" module="Projects">
<Item title="流水号" name="SerialNumber" type="text" />
<Item title="项目编号" name="Number" type="text" />
<Item title="项目名称" name="Name" type="text" />
<Item title="项目名称拼音首字母" name="NameSpell" type="text" />
<Item title="项目负责人" name="Principal" type="entity" entityName="Expert" require="false" />
<Item title="项目负责姓名" name="PrincipalName" type="text" property="get" />
<Item title="项目负责工作证号" name="PrincipalNumber" type="text" property="set" />
<Item title="项目分级" name="Level" type="enum" enumName="ProjectLevel" />
<Item title="是否横向项目" name="IsHorizontal" type="bool" />
<Item title="基地名称" name="Base" type="entity" entityName="Base" require="false" />
<Item title="学科代码" name="SubjectCode" type="text" />
<Item title="研究属性" name="ResearchType" type="text" />
<Item title="是否保密" name="IsSecret" type="bool" />
<Item title="起始年月" name="StartDate" type="datetime" require="false" />
<Item title="终止年月" name="EndDate" type="datetime" require="false" />
<Item title="合作方式" name="CooperationType" type="text" />
<Item title="承担单位" name="Unit" type="text" />
<Item title="任务来源" name="TaskComingFrom" type="text" />
<Item title="公司所在地" name="CorporationPlace" type="text" />
<Item title="项目状态" name="State" type="enum" enumName="ProjectState" />
<Item title="建立人" name="Creator" type="text" />
<Item title="建立时间" name="CreateDate" type="datetime" require="false" />
<Item title="更新时间" name="UpdateTime" type="datetime" require="false" />
<Item title="备注" name="Remark" type="text" />
</Entity>
- <Entity title="项目成员" name="ProjectMember" module="Projects">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="专家姓名" name="Name" type="text" property="get" />
<Item title="工作证号" name="ExpertNumber" type="text" property="get" />
<Item title="位次" name="Order" type="int" require="false" />
<Item title="子课题号" name="TaskNo" type="text" />
<Item title="子课题名称" name="TaskName" type="text" />
</Entity>
- <Entity title="项目信息—分类" name="ProjectInfo_Type" module="Type">
<Item title="对应的项目" name="Project" type="entity" entityName="Project" />
<Item title="项目级别" name="Rank" type="entity" entityName="ProjectRank" require="false" />
<Item title="项目类别" name="Type" type="entity" entityName="ProjectType" require="false" />
<Item title="资助领域" name="SupportField" type="entity" entityName="ProjectSupportField" require="false" />
<Item title="资助子领域" name="SupportSubField" type="entity" entityName="ProjectSupportSubField" require="false" />
<Item title="资助类别" name="SupportCategory" type="entity" entityName="ProjectSupportCategory" require="false" />
<Item title="项目级别" name="RankName" type="text" property="none" />
<Item title="项目类别" name="TypeName" type="text" property="none" />
<Item title="资助领域" name="SupportFieldName" type="text" property="none" />
<Item title="资助子领域" name="SupportSubFieldName" type="text" property="none" />
<Item title="资助类别" name="SupportCategoryName" type="text" property="none" />
</Entity>
- <Entity title="项目级别" name="ProjectRank" module="Type">
<Item title="级别名称" name="Name" type="text" />
<Item title="是否横向项目" name="IsHorizontal" type="bool" property="get" />
</Entity>
- <Entity title="项目类别" name="ProjectType" module="Type">
<Item title="对应级别" name="ProjectRank" type="entity" entityName="ProjectRank" />
<Item title="类别名称" name="Name" type="text" />
<Item title="类别简称" name="ShortName" type="text" />
<Item title="专管部门" name="Administration" type="text" />
<Item title="分类代码" name="Code" type="text" />
<Item title="是否预算制" name="IsBudget" type="bool" require="true" />
</Entity>
- <Entity title="项目资助类别" name="ProjectSupportCategory" module="Type">
<Item title="对应类别" name="ProjectType" type="entity" entityName="ProjectType" />
<Item title="资助类别名称" name="Name" type="text" />
</Entity>
- <Entity title="项目资助领域" name="ProjectSupportField" module="Type">
<Item title="对应类别" name="ProjectType" type="entity" entityName="ProjectType" />
<Item title="资助领域名称" name="Name" type="text" />
</Entity>
- <Entity title="项目资助子领域" name="ProjectSupportSubField" module="Type">
<Item title="对应资助领域" name="ProjectSupportField" type="entity" entityName="ProjectSupportField" />
<Item title="资助子领域名称" name="Name" type="text" />
</Entity>
- <Entity title="项目信息—经费" name="ProjectInfo_Fund" module="Fund">
<Item title="对应的项目" name="Project" type="entity" entityName="Project" />
<Item title="资金来源" name="FundFrom" type="text" />
<Item title="来款单位" name="FundFromUnit" type="text" />
<Item title="来款单位地址" name="FundFromUnitAddress" type="text" />
<Item title="总经费" name="FundTotal" type="int" />
<Item title="合同额" name="FundContract" type="int" />
<Item title="计划外拨经费" name="FundPlanOutTotal" type="int" require="false" />
<Item title="计划出海费" name="FundPlanOversea" type="int" require="false" />
<Item title="计划硬件费" name="FundPlanHardware" type="int" require="false" />
<Item title="已到经费" name="FundReceived" type="int" />
<Item title="已校内分配" name="FundAlreadyIn" type="int" />
<Item title="已外拨经费" name="FundAlreadyOut" type="int" />
<Item title="已分配出海费" name="FundAlreadyOversea" type="int" />
<Item title="已分配硬件费" name="FundAlreadyHardware" type="int" />
<Item title="校内管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协管理费" name="OverheadExpensesOut" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
</Entity>
- <Entity title="项目付款计划" name="PayPlanItem" module="Fund">
<Item title="对应项目经费" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" />
<Item title="到款时间" name="DateTime" type="datetime" />
<Item title="到款数额" name="Amount" type="int" />
</Entity>
- <Entity title="经费到账记录" name="Finance" module="Fund">
<Item title="流水号" name="SerialNumber" type="text" description="用于保存上一个数据库版本中的该信息,无逻辑意义" />
<Item title="描述" name="Description" type="text" />
<Item title="到款日期" name="ReceivedDate" type="datetime" />
<Item title="凭单号" name="VoucherNumber" type="text" />
<Item title="到款金额" name="Amount" type="int" />
<Item title="已下拨经费" name="DescendAmount" type="int" />
</Entity>
- <Entity title="项目经费成员" name="FundMember" module="Fund">
<Item title="对应项目经费信息" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" require="false" />
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="专家姓名" name="ExpertName" type="text" property="get" />
<Item title="工作证号" name="ExpertNumber" type="text" property="get" />
<Item title="帐本号" name="AccountBookNumber" type="text" />
</Entity>
- <Entity title="下拨经费记录" name="FundDescend" module="Fund">
<Item title="对应经费到帐" name="Finance" type="entity" entityName="Finance" />
<Item title="对应项目" name="ProjectInfo_Fund" type="entity" entityName="ProjectInfo_Fund" />
<Item title="下拨时间" name="DescendDateTime" type="datetime" />
<Item title="下拨金额" name="Amount" type="int" />
<Item title="下拨人" name="Operator" type="text" />
<Item title="是否以完成分配" name="IsAllocated" type="bool" require="true" />
</Entity>
- <Entity title="经费分配记录" name="FundAllocation" module="Fund">
<Item title="对应经费下拨" name="FundDescend" type="entity" entityName="FundDescend" require="false" />
<Item title="金额" name="Amount" type="int" description="等于下拨的金额" />
<Item title="对应的项目名称" name="ProjectName" type="text" />
<Item title="校内分配" name="AllocationIn" type="int" />
<Item title="外协分配" name="AllocationOut" type="int" />
<Item title="出海费" name="AllocationOversea" type="int" />
<Item title="硬件费" name="AllocationHardware" type="int" />
<Item title="校内分配管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协分配管理费" name="OverheadExpensesOut" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="提交分配时间" name="SubmitDateTime" type="datetime" require="false" />
<Item title="负责人" name="Principle" type="text" />
<Item title="状态" name="CensorState" type="enum" enumName="CensorState" />
<Item title="审核人" name="Censor" type="text" />
<Item title="审核时间" name="CensorDateTime" type="datetime" require="false" />
<Item title="审核意见" name="CensorRemark" type="text" />
</Entity>
- <Entity title="经费凭单" name="Voucher" module="Fund">
<Item title="对应经费分配" name="FundAllocation" type="entity" entityName="FundAllocation" />
<Item title="对应经费成员" name="FundMember" type="entity" entityName="FundMember" />
<Item title="凭单号" name="VoucherNumber" type="text" />
<Item title="账本号" name="AccountBookNumber" type="text" />
<Item title="校内分配" name="AllocationIn" type="int" />
<Item title="外协分配" name="AllocationOut" type="int" />
<Item title="硬件费" name="AllocationHardware" type="int" />
<Item title="出海费" name="AllocationOversea" type="int" />
<Item title="校内分配管理费" name="OverheadExpensesIn" type="int" />
<Item title="外协分配管理费" name="OverheadExpensesOut" type="int" />
<Item title="硬件管理费" name="OverheadExpensesHardware" type="int" />
<Item title="出海管理费" name="OverheadExpensesOversea" type="int" />
<Item title="是否已打印" name="IsPrinted" type="bool" require="true" />
<Item title="打印时间" name="PrintTime" type="datetime" require="false" />
</Entity>
- <Entity title="凭单项目-校内分配" name="VoucherItemIn" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="凭单项目-外协分配" name="VoucherItemOut" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
<Item title="企业名称" name="Corporation" type="text" />
</Entity>
- <Entity title="凭单项目-出海费" name="VoucherItemOversea" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="凭单项目-硬件费" name="VoucherItemHardware" module="Fund">
<Item title="对应凭单" name="Voucher" type="entity" entityName="Voucher" />
<Item title="数额" name="Amount" type="int" />
<Item title="管理费" name="OverheadExpenses" type="int" />
</Entity>
- <Entity title="合同" name="Contract" module="Documents">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="合同编号" name="ContractNumber" type="text" />
<Item title="合同类型" name="Type" type="enum" enumName="ContractType" />
<Item title="提交日期" name="SubmitDateTime" type="datetime" require="false" />
<Item title="状态" name="State" type="enum" enumName="CensorState" />
<Item title="合同内容" name="Content" type="bytes" />
</Entity>
- <Entity title="文档" name="Document" module="Documents">
<Item title="对应项目" name="Project" type="entity" entityName="Project" />
<Item title="文档名称" name="Name" type="text" />
<Item title="提交人" name="Author" type="text" />
<Item title="提交日期" name="SubmitDateTime" type="datetime" require="false" />
<Item title="文档内容" name="Content" type="bytes" require="false" />
<Item title="状态" name="State" type="enum" enumName="CensorState" />
<Item title="审核人" name="Censor" type="text" />
<Item title="审核日期" name="CensorDateTime" type="datetime" require="false" />
<Item title="是否必须" name="IsRequire" type="bool" />
</Entity>
- <Entity title="系统设置" name="SystemSetting" module="Framework">
<Item title="外协经费在总经费中最大比例" name="FundOutRatio" type="int" description="表示百分比" />
</Entity>
- <Entity title="计数器" name="Count" module="Framework">
<Item title="年份" name="Year" type="int" />
<Item title="审核的项目数目" name="Project" type="int" />
<Item title="审核的合同数目" name="Contract" type="int" />
<Item title="横向凭单数目" name="HorizontalVoucher" type="int" />
<Item title="纵向凭单数目" name="VerticalVoucher" type="int" />
</Entity>
- <Entity title="提示文本" name="NoticeText" module="Framework">
<Item title="值" name="Value" type="text" description="标题即提示文本的内容" />
<Item title="缩写" name="ShortKey" type="text" description="拼音首字母" />
<Item title="提示文本类型" name="Type" type="enum" enumName="NoticeTextType" />
</Entity>
- <Entity title="键值对" name="KeyValues" module="Framework">
<Item title="键" name="Key" type="text" />
<Item title="值" name="Value" type="text" />
<Item title="类型" name="Type" type="enum" enumName="KeyValueType" />
</Entity>
- <Entity title="短消息" name="Message" module="Framework">
<Item title="发送人" name="Sender" type="entity" entityName="User" require="false" />
<Item title="发送人姓名" name="SenderName" type="text" require="true" />
<Item title="收信人" name="Receiver" type="entity" entityName="User" />
<Item title="标题" name="Title" type="text" require="true" />
<Item title="内容" name="Content" type="longtext" require="false" />
<Item title="发送时间" name="DateTime" type="datetime" require="true" />
<Item title="是否已读" name="IsRead" type="bool" require="true" />
</Entity>
- <Entity title="日志" name="Log" module="Framework">
<Item title="时间" name="DateTime" type="datetime" require="true" />
<Item title="用户" name="User" type="text" require="true" />
<Item title="操作" name="Action" type="text" require="true" />
<Item title="描述" name="Description" type="text" require="false" />
</Entity>
- <Entity title="基地" name="Base" module="Bases">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="地址" name="Address" type="text" require="false" />
<Item title="邮编" name="Zip" type="text" require="false" />
<Item title="电话" name="Phone" type="text" require="false" />
<Item title="传真" name="Fax" type="text" require="false" />
<Item title="主管部门" name="Administration" type="text" require="false" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="负责人" name="Director" type="entity" entityName="Expert" require="false" />
<Item title="负责人姓名" name="DirectorName" type="text" property="get" />
<Item title="负责人工作证号" name="DirectorNumber" type="text" property="set" />
<Item title="学术负责人" name="AcademyDirector" type="entity" entityName="Expert" require="false" />
<Item title="学术负责人姓名" name="AcademyDirectorName" type="text" property="get" />
<Item title="学术负责人工作证号" name="AcademyDirectorNumber" type="text" property="set" />
</Entity>
- <Entity title="获奖情况" name="Award" module="Awards">
<Item title="奖项名称" name="Name" type="text" require="true" />
<Item title="获奖年份" name="Year" type="int" require="false" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="等级" name="Class" type="text" require="false" />
<Item title="对应项目" name="Project" type="entity" entityName="Project" require="false" />
<Item title="对应项目名称" name="ProjectName" type="text" require="false" />
<Item title="简介" name="Introduction" type="longtext" require="false" />
</Entity>
- <Entity title="获奖人" name="AwardWinner" module="Awards">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
</Entity>
- <Entity title="专利" name="Patent" module="Patents">
<Item title="专利号" name="Number" type="text" require="true" />
<Item title="名称" name="Name" type="text" require="true" />
<Item title="申请时间" name="ApplicationDateTime" type="datetime" require="false" />
<Item title="授权时间" name="AuthorizeDateTime" type="datetime" require="false" />
<Item title="类型" name="Type" type="enum" enumName="PatentType" require="true" />
<Item title="简介" name="Introduction" type="text" require="false" />
</Entity>
- <Entity title="专利发明人" name="PatentInventer" module="Patents">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
</Entity>
- <Entity title="论文" name="Paper" module="Papers">
<Item title="名称" name="Name" type="text" require="true" />
<Item title="编号" name="Number" type="text" require="true" />
<Item title="级别" name="Rank" type="text" require="false" />
<Item title="期刊" name="Magazine" type="text" require="true" />
<Item title="影响因子" name="InfluenceFactor" type="int" require="true" description="精确到小数点后第四位" />
<Item title="文档编号" name="DocumentNumber" type="text" require="true" />
<Item title="期/卷" name="Volume" type="text" require="false" />
<Item title="起始页码" name="StartPage" type="int" require="true" />
<Item title="终止页码" name="EndPage" type="int" require="true" />
<Item title="页数" name="Page" type="int" require="true" />
<Item title="发表日期" name="PublishDate" type="datetime" require="true" />
<Item title="摘要" name="Abstract" type="longtext" require="false" />
<Item title="ISBN" name="Isbn" type="text" require="false" />
<Item title="关键字" name="Keywords" type="text" require="false" />
</Entity>
- <Entity title="论文作者" name="PaperAuthor" module="Papers">
<Item title="对应专家" name="Expert" type="entity" entityName="Expert" require="false" />
<Item title="姓名" name="Name" type="text" require="true" />
<Item title="工作证号" name="Number" type="text" require="false" />
<Item title="位次" name="Order" type="int" require="true" />
<Item title="是否通讯作者" name="IsLinkman" type="bool" require="true" />
</Entity>
- <Entity title="论文对应的项目" name="PaperProject" module="Papers">
<Item title="论文" name="Paper" type="entity" entityName="Paper" require="true" />
<Item title="对应项目" name="Project" type="entity" entityName="Project" require="false" />
<Item title="项目名称" name="ProjectName" type="text" require="true" />
</Entity>
</Entities>
相关文章推荐
- 微型项目实践(1):用XML描述实体
- 微型项目实践(3):实体代码的生成
- 微型项目实践(6):Business层代码分析——实体类的生成策略
- 微型项目实践(3):实体代码的生成
- 微型项目实践(5):Business层代码分析——实体基类
- 微型项目实践(5):Business层代码分析——实体基类
- Spring项目实践(二)---web.xml文件详解
- 微型项目实践(系列文章)
- 微型项目实践(8):数据访问的实现
- 微型项目实践感悟(转)
- 微型项目实践(10):Master & Default
- 微型项目实践(2):用测试驱动代码生成
- 微型项目实践感悟
- 微型项目实践(9):页面的数据访问策略
- Tomcat实践1【Tomcat 利用server.xml进行项目映射的部署】
- 微型项目实践(12):查询与显示
- 微型项目实践(11):控件与格式化显示
- 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?
- web.xml文件的作用----简单描述项目常见的几个配置
- Spring.Net+NHibernate 不再使用 XML 描述实体关系