今天看了下ado.net 中介绍的Mapping 由于是英文书籍,看得一头雾水。msdn中也没说出个一二三来。只知道在Adapter对像中,同时在定义列的Mapping时需要引入using system.data.commn; 由于在平时应用中并没有用到这一块后在baidu中找到firstsee写的DataMapping简介文章(http://blog.donews.com/firstsee/archive/2007/02/02/1124372.aspx) DataMapping是一个简化版的ORM组件,它实现了最基本的继承、组合、一对一、一对多、多对一、多对多等对象关系。并且利用C#的语言特性实现了很多的有趣的,令你兴奋的功能。相对于其他大型的ORM框架它具有如下特点:
通常来看很多人都拿Hibernate等大型的ORM组件与其相比。但我在应用中确实很少涉及Ado.NET Mapping中的相关东西,现在附上一段代码,您可以从代码中体会他的用处,但我觉得这只是其中一小点,对于我没用过的东西真是不敢枉加评论,希望有深入了解的朋友告之。谢谢!
class Program
{
static void Main(string[] args)
{
try
{
OleDbConnection dbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=..\\..\\db.mdb");
OleDbDataAdapter usersDataAdapter = new OleDbDataAdapter("SELECT ID, fn, ln, cty, st FROM tabUsers", dbConn);
DataSet usersDataSet = new DataSet("User");
DoDataMappings(usersDataAdapter);
usersDataAdapter.Fill(usersDataSet);
foreach (DataRow r in usersDataSet.Tables["tabUsers"].Rows)
{
Console.WriteLine("ID: {0}, FirstName: {1}, LastName: {2}, City: {3}, State: {4}", r["UserID"], r["FirstName"], r["LastName"], r["City"], r["State"]);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private static void DoDataMappings(OleDbDataAdapter dataAdapter)
{
try
{
// Define an array of columns to map.
DataColumnMapping[] mappedColumns = {
new DataColumnMapping("ID", "UserID"),
new DataColumnMapping("fn", "FirstName"),
new DataColumnMapping("ln", "LastName"),
new DataColumnMapping("cty", "City"),
new DataColumnMapping("st", "State")
};
// Define the table containing the mapped columns.
DataTableMapping usersTableMapping = new DataTableMapping("Table", "tabUsers", mappedColumns);
// Activate the mapping mechanism.
dataAdapter.TableMappings.Add(usersTableMapping);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
同时,DataAdapter中的MissingMappingAction and MissingSchemaAction两个属性。前者确定传入数据没有匹配的表或列时需要执行的操作。后者将为 DataAdapter MissingSchemaAction 属性设置为 AddWithKey 与类似使用 DataAdapter.FillSchema 方法。 这两种方法添加主键、 自动增加 字段、 为空的字段和唯一索引的架构信息。 到于什么时候应用,请参见msdn上有详细说明。