我为公司编写了一些工资单软件(大约250名员工),当您加载软件时,它会提示您并说新的员工已添加到数据库中。提示强制您选择他们是什么类(经理,销售,人工等)。除了两个使用该软件的用户外,该程序的这一部分适用于所有用户。这两个用户可以取消提示并继续使用该软件而没有任何问题(并且适用于他们的软件部分使用与提示使用的数据库相同的数据库,“AttendanceData”)。以下是他们提交“员工类”信息时收到的错误:
指定的演员表无效。在 System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManager
2.TryCreateKeyFromValues(Object[] values, V& v) at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache
2.Find(对象[] keyValues)at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(元类型 type,Object [] keyValues)at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType类型, Object [] keyValues)at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, 对象实例)在 System.Data.Linq.ChangeProcessor.BuildEdgeMaps()at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges()
下面我提供了处理此提示的代码:
using (AttendanceDataContext AttendanceData = new AttendanceDataContext())
{
var attEmpTbl = AttendanceData.EMPLOYEEs.Where(i => i.ACTIVESTATUS == 0 &&
(i.WG2 == 1 ||
i.WG2 == 14 ||
i.WG2 == 16 ||
i.WG2 == 18 ||
i.WG2 == 20 ||
i.WG2 == 21 ||
i.WG2 == 23 ||
i.WG2 == 25 ||
i.WG2 == 27 ||
i.WG2 == 29 ||
i.WG2 == 30 ||
i.WG2 == 32 ||
i.WG2 == 35 ||
i.WG2 == 38 ||
i.WG2 == 40 ||
i.WG2 == 49 ||
i.WG2 == 51 ||
i.WG2 == 54 ||
i.WG2 == 59)).OrderBy(i => i.WG2);
List<int> commEmpFilekey = new List<int>();
using (CommissionsDataContext CommissionData = new CommissionsDataContext())
{
commEmpFilekey = CommissionData.EmployeeLists.Select(i => i.FileKey).ToList();
}
if (commEmpFilekey.Count() > 0)
{
int records = 0;
int record = 1;
foreach (var item in attEmpTbl)
{
if (!commEmpFilekey.Contains(item.FILEKEY.Value))
{
records++;
}
}
foreach (var item in attEmpTbl)
{
if (!commEmpFilekey.Contains(item.FILEKEY.Value))
{
string commID;
using (EmployeeEntry ee = new EmployeeEntry(item.FIRSTNAME, item.LASTNAME, item.BADGE.Value, record, records, item.WG2.Value))
{
DialogResult result = ee.ShowDialog();
if (result == DialogResult.Yes)
{
using (CommissionsDataContext data = new CommissionsDataContext())
{
commID = ee.commID;
EmployeeList employee = new EmployeeList { FileKey = item.FILEKEY.Value, Badge = item.BADGE.Value, CommID = commID };
data.EmployeeLists.InsertOnSubmit(employee);
data.SubmitChanges();
}
}
}
record++;
}
}
}
}
同样,除了我们的“payroll”和“hr”用户之外,此代码适用于所有用户。此外,每个使用该软件的用户都使用我们的本地终端服务器,因此这两个用户的本地PC不具备正确的参考资料......我对此感到困惑......