在上一篇隨筆中已經完成了ADO.NET操作數據庫的封裝,並已經支持多數據庫,只需要在 配置文件中指定數據庫類型即可,本節主要完成對象與數據庫表的關系映射配置。
下面看表名的映射配置代碼塊1-1:
[Table(Name="Student")]
public class StudentEntity
{
//...........省略
}
在類上面用[Table(name = ”Student")]屬性來配置,表示該實體類StudentEntity與數 據庫中的Student表進行關系映射。
Table屬性需要自己編寫,代碼塊1-2:
using System;
using System.Collections.Generic;
using System.Text;
namespace System.Orm.CustomAttributes
{
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class TableAttribute : Attribute
{
private string _Name = string.Empty;
public TableAttribute() {}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
}
}
上面代碼中我們編寫TableAttribute自定義屬性類,然後繼承Attribute自定義屬性基類 ,在具體使用的時候我們只需在需要配置屬性的類上加[Table(Name="你要指定的表名")]。 這裡的TableAttribute省略了後面的Attribute,用Table即可.NET會根據Table名稱 +Atrribute去查找TableAttribute類。
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
這段屬性配置表示TableAttribute屬性類的用法配置,
AttributeTargets.Class表示只可用於類,所以使用時把該屬性加載類的上面,如代碼塊 1-1
AllowMultiple 表示能否為一個元素指定多個屬性示例,在這裡比如在StudentEntity上 是否可以配置多次Table屬性,我們設置false即只可配置一次。
Inherited 表示Table屬性可否被繼承,這裡設置false即不可被繼承。
在TableAttribute屬性類中定義了Name公有屬性,用於指定Table屬性所配置的實體所對 應的數據庫中表名。
這裡Table屬性到這裡已經完成,下一篇中將繼續介紹自定義屬性:
IdAttribute(用於指定實體類中哪一個屬性字段對應數據庫表中的主鍵ID)