Nbear外部配置文件方式定义实体元数据


【IT168技术文档】

   前面的介绍中我们已经看到,实体定义中我们可以给Entity设置TableAttribute,对于属性我们可以设置Primary、ColumnName或CustomProperty这些Attribute。

以Attribute方式设置元数据很方便,但是,对元数据的修改必须重新编译才能生效。为了解决这样的问题,NBear中同时提供在外部配置文件中定义这些元数据的方式。

     注意,如果对同一个Entity或属性同时设置了Attribute和外部文件设置,配置在外部配置文件中的设置会覆盖直接写在Attribute中的设置。这样有一个很大的好处:我们可以在初始开发时将配置直接写在Attribute中,这样非常方便调试和修改。而在程序部署以后,如果需要修改元数据定义,只需修改外部配置文件,就能在不需重新编译的情况下及时生效。

    下面是一个外部配文件的示例:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="EntityConfiguration" type="NBear.Common.EntityConfigurationSection, NBear.Common"/>
</configSections>
<EntityConfiguration>
<Entity fullName="NBear.Test.UnitTests.OrderDetailsExtended2">
<Table isView="true">
<Name>Order Details Extended</Name>
</Table>
<Columns>
<Column propertyName="ProductName2" columnName="ProductName"/>
<Column propertyName="OrderID" isPrimaryKey="true"/>
<Column propertyName="ProductID" isPrimaryKey="true"/>
<Column propertyName="Sample2" isCustomProperty="true">
<Parameters>
<Parameter>Sample2</Parameter>
</Parameters>
</Column>
</Columns>
</Entity>
</EntityConfiguration>
</configuration>

    注意,必须在Web.config或App.config中先注册一个名叫EntityConfiguration的section,然后在这个EntityConfiguration中定义实体的元数据。基本的格式如上面的示例。

    每个Entity对应一个Entity元素,Entity元素只有一个属性fullName,值必须为typeof(Entity).FullName。Entity可以包含一个Table和一个Columns子元素。

    Table元素可以包含如下属性:isView, updateExtendedOnly, isContract和updateTableName,以及如下子元素:Name,AdditionalWhere和AdditionalInsert,分别代表TableAttribute的相应属性。
 
    Columns元素下定义对Column的定义。

    每个Column元素可以包含属性包括:propertyName,columnName,isPrimaryKey和isCustomProperty,以及Parameters子元素(如示例),分别代表了PrimaryKey,ColumnName和CustomProperty这些Attribute的定义。

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3