SET IDENTITY_INSERT dbo.ICMOVh OFF
SET IDENTITY_INSERT dbo.ICMOVD ON
对于主从表数据,先导入主表,再导入从表。删除主从表数据就是先删除从表,再删除主表。
LLBL Gen
作为ORM的基本特征,它是跨数据库平台的。您可以使用此功能从一个数据库中读取,然后更改连接字符串并将其保存在另一个数据库中,以完成数据库的传输。以销售单为例,读取销售单的代码。看起来是这样的。
public SalesOrderEntity GetSalesOrder(System.String RefNo, IPrefetchPath2 prefetchPath, ExcludeIncludeFieldsList fieldList)
{
SalesOrderEntity _SalesOrder=new SalesOrderEntity(RefNo);
using (DataaccessAdapterBase adapter=GetCompanyDataAccessAdapter())
{
bool found=adapter.FetchEntity(_SalesOrder, prefetchPath, null, fieldList);
if (!found) throw new Foundation.Common.RecordNotFoundException('Invalid SalesOrder');
}
return _SalesOrder;
}
同时保存销售订单的代码,看起来是这样的。
public SalesOrderEntity SaveSalesOrder(SalesOrderEntity SalesOrder, EntityCollection entitiesToDelete, string seriesCode)
{
using (DataAccessAdapterBase adapter=GetCompanyDataAccessAdapter())
{
try
{
adapter.StartTransaction(IsolationLevel.ReadCommitted, 'SaveSalesOrder');
adapter.SaveEntity(SalesOrder, true, false);
adapter.Commit();
}
catch
{
adapter.Rollback();
throw;
}
}
return SalesOrder;
}
这些代码由代码生成器直接生成。完成数据传输的ORM代码如下所示。
string source='Data Source=192.168.0.96;Initial Catalog=TS;User Id=sa ; Password=holiday;';
string destination='Data Source=192.168.0.200;Initial Catalog=TS;User Id=sa ; Password=holiday;';
ClientProxyFactory.ConnectionString=source;
ISalesOrderManager manager=ClientProxyFactory.CreateProxyInstanceISalesOrderManager();
SalesOrderEntity salesOrder=manager.GetSalesOrder(customerNo, null);
ClientProxyFactory.ConnectionString=destination;
manager.SaveSalesOrder(salesOrder);
这样,几个代码就将销售订单数据从192.168.0.96机器移动到192.168.0.200机器。
此外,这些代码可以编写为一个通用方法,并且可以传入参数来批量移动数据。
根据我的了解和探索,目前项目仍然使用主流的SQL Server 2005,有SQL Server 2008的Express版本,2008 R2。
这样可以读取比SQL Server 2005更高的客户数据库,与更新后的数据库兼容。为了在不同版本的SQL Server之间交换数据,供大家参考。