【发布时间】:2018-07-24 19:41:18
【问题描述】:
我在 DuplicateOrder(TestOrder) 上收到一个错误,因为“无法从 tables.Order 转换为 int”,即使 Orders 表中的 OrderID 是 int 也是如此
void DuplicateOrder(int orderId)
{
string methodName = MethodBase.GetCurrentMethod().Name;
try {
using (MSBLegacyContext db = new MSBLegacyContext())
{
var TestOrder = db.Orders.Where(i=>i.OrderID == orderId).FirstOrDefault();
DuplicateOrder(TestOrder);
}
}
catch (Exception ex)
{
Console.WriteLine(methodName, ex, string.Format("Test", orderId));
}}
我在这里错过了什么?
【问题讨论】:
-
你想达到什么目的?请注意,
Where和FirstOrDefault都不会更改原始类型(tables.Order的集合将导致返回tables.Order的单个(或空)实例,因此您需要自己提取OrderId属性。跨度> -
应该是
DuplicateOrder(TestOrder.OrderId); -
@Chad 那是我没有得到的部分,这是一个没有停止的递归调用。
-
因为你的 testOrder 是 Order 类型并且要注意你的方法是递归的,如果没有错误会导致无限循环。
-
此代码强烈表明您缺少具有
Order类型参数的方法DuplicateOrder。此代码不能是递归的。那么问题来了:缺少的方法在哪里?