C# 基于最新自动生成的主键,未使用L2S从db获取最新记录

C# 基于最新自动生成的主键,未使用L2S从db获取最新记录,c#,linq,C#,Linq,AOA, 基于自动生成的主键值,我无法从db获取用于打印的最新记录。其目的是打印新创建的客户帐户详细信息。我使用reportviewer进行打印 首先,我使用L2S在Customer表中保存一条新记录,保存更改后,我得到最新的Customer主键值,它工作正常。这是达到这个目的的代码 DataClassesDataContext dc = new DataClassesDataContext(); DataSet1.CustomerAccountsDataTable dt = new DataS

AOA, 基于自动生成的主键值,我无法从db获取用于打印的最新记录。其目的是打印新创建的客户帐户详细信息。我使用reportviewer进行打印

首先,我使用L2S在Customer表中保存一条新记录,保存更改后,我得到最新的Customer主键值,它工作正常。这是达到这个目的的代码

DataClassesDataContext dc = new DataClassesDataContext();
DataSet1.CustomerAccountsDataTable dt = new DataSet1.CustomerAccountsDataTable();

CustomerAccount dtCustAcc = new CustomerAccount();

dtCustAcc.Name = tbCustName.Text;

<!-----------HERE ARE SOME MORE COLUMNS-----------> 

dc.CustomerAccounts.InsertOnSubmit(dtCustAcc);
dc.SubmitChanges();

int newCustId = int.Parse(dtCustAcc.CustID);
然后我将这个键值传递给print方法,以使用LINQ查询基于这个键值获得记录表单db。它还适用于除我传递给print方法和LINQ查询的新生成键值之外的所有其他值

 var query =
            from cust in dc.CustomerAccounts
            where cust.CustID == newCustId
            select cust;

foreach (var d in query)
{
    dt.Rows.Add(d.CustID, d.Name, <-some more columns->);

}
当我尝试使用foreach基于这个keynewCustId值查询结果填充DataTable时,它给出了一个非常无意义的类型或错误指定的Cast在foreach上无效。这是代码

我在reportviewr上使用此数据表进行打印

注意:我已经检查了数据库中CustID的值为int。Bothdb和newCustId的类型完全相同

我正在使用WPF、C、VS2012、MS SQL SERVER 2012

有人能帮我吗


提前感谢….

有一件事让我对您的代码感到困扰:int newCustId=int.ParsedtCustAcc.CustID;。因此,我认为CustID属性是一个字符串,这可能会解释您指定的强制转换无效错误….

没有CustID也是int。我已经检查了它。然后在dt.Rows.Add语句中出现另一个无效强制转换错误。错误很少是荒谬的……谢谢你@Laurent PerrucheJ。我发现了问题所在。这是由于设计器表中的更改错误造成的。