province.RowState == DataRowState.Modified)
{
if (province.IsNameNull() && !province.IsNameGuidNull())
{
DBDisplayString.SaveDisplay(languageCode,province.NameGuid,null,vDisplayTable);
}
else if (!province.IsNameNull())
{
if (province.IsNameGuidNull())
{
province.NameGuid = Guid.NewGuid();
}
DBDisplayString.SaveDisplay(languageCode,province.NameGuid,province.Name,vDisplayTable);
}
}
}
DataTableExtend[] dts = new DataTableExtend[4];
dts[0] = new DataTableExtend(ds.Port,"Port");
dts[1] = new DataTableExtend(ds.City, "City");
dts[2] = new DataTableExtend(ds.Province,"Province");
dts[3] = new DataTableExtend(ds.AddressDisStr,vDisplayTable);
SQLModify.ModifyDataBase(dts);
}
可以看出,这个操作会很麻烦,对于删除操作而言,我们需要把该条记录所有的多语言数据都删掉,然后很不幸,对于数据集中已删除了的记录而言,虽然它还存在但却不能访问,更不幸的是,因为多数据表关联的原因,我们甚至都不知道有多少数据被级连删除了:(没办法,RejectChanges()吧,然后通过关联找到所有被级连删除的数据,把多语言数据都删除掉,然后再删除自身,注意到我这里用到了Select方法,这是一个很方便的做法,减少了到数据库的往返操作,从而以牺牲一些内存的代价节省了与数据库痛心的时间。对于新增和修改操作,我们则负担着另一项任务,即把Name字段里的数据根据用户的当前语言,更新会数据库相应的记录中,这里也会有很多种情况,如该字段数据是新增的,缺省语言的数据也没有,当前语言的数据也没有,或者是缺省语言的数据有了当前语言的数据却没有,再或者用户是把这个字段的数据清空了,我们必须要找到多语言表中相应的记录并删除掉……等等,无奈,我们只好让DBDisplayString.SaveDisplay()包办掉这一切。
关键词:.net多语言与数据集内多数据表的处理(3)