SET IDENTITY_INSERT dbo .伊克莫夫关闭
SET IDENTITY_INSERT dbo .ICMOVD开启
对于主从表数据,先导入主表,再导入从表。删除主从表数据,则是先删从表,再删主表。
LLBL将军
作为ORM的基本特征,跨数据库平台。你可以运用此特点,从一个数据库中读取,然后改变连接字符串,在另一个数据库中保存,完成数据库的转移工作。以销售单为例子,读取销售单的代码,看起来是这样的
public SalesOrderEntity GetSalesOrder(System .String RefNo,IPrefetchPath2 prefetchPath,ExcludeIncludeFieldsList字段列表)
{
SalesOrderEntity _销售订单=新销售订单实体(ref no);
使用(DataaccessAdapterBase adapter=GetCompanyDataAccessAdapter())
{
发现布尔值=适配器FetchEntity(_SalesOrder,prefetchPath,null,字段列表);
如果(!发现)扔新粉底常见的。RecordNotFoundException(“无效的销售订单");
}
退货_销售订单
}
同时,保存销售单的代码,看起来是这样的
公共销售订单实体保存销售订单(销售订单实体销售订单,实体集合实体删除,字符串序列代码)
{
使用(DataAccessAdapterBase adapter=GetCompanyDataAccessAdapter())
{
尝试
{
适配器启动事务(隔离级别为0 . 001 . 000)。ReadCommitted,“保存销售订单”);
适配器SaveEntity(SalesOrder,true,false);
适配器. commit();
}
捕捉
{
适配器. roll back();
扔;
}
}
返回销售订单;
}
这些代码均是由代码生成器直接生成的。完成数据转移的ORM代码,看起来是这样子的
字符串源='数据源=192。168 .0 .96;初始目录=TS用户Id=sa密码=假日;'
字符串目的地='数据源=192。168 .0 .200;初始目录=TS用户Id=sa密码=假日;'
ClientProxyFactory .ConnectionString=源
ISalesOrderManager manager=ClientProxyFactory .CreateProxyInstanceISalesOrderManager();
销售订单实体销售订单=经理GetSalesOrder(customerNo,null);
ClientProxyFactory .ConnectionString=目标
经理SaveSalesOrder(销售订单);
就这样几句代码,把销售单数据从192.168.0.96的机器搬动到192.168.0.200的机器上。
更进一步的,这几句代码可以写成一个泛型的方法,传入参数,即可达到批量搬动数据。
以我的理解和摸索,当前仍然是让项目使用主流的SQL Server 2005,搭配表达版本的SQL Server 2008、2008 R2版、这样可以读取高于SQL Server 2005的客户数据库,兼容于更新的数据库。为了在不同的版本的SQL Server之间互导数据,供您参考。