0
我有一个SQL Server精简版版本3.5用于存储订单信息的Winforms应用程序,但我有一个谁有问题的详细信息在它完成并提交后没有显示出来,并且通过接收用户的数据库我可以重现问题,但我无法弄清楚原因。我试图弄清楚的是为什么他们没有同步,因为其他人确实工作得很好,我搜索了Stack Overflow,没有找到适合我的答案。Linq查询返回0结果,但应返回1
linqpad结果赞成/反对我收到的数据库SSMS是相同的,并带来了一排为下面的查询(查询相同的实体框架探查节目)的结果:
SELECT [Extent1].[Id] AS [Id],
[Extent1].[OrderHeaderId] AS [OrderHeaderId],
[Extent1].[Price] AS [Price],
[Extent1].[Quantity] AS [Quantity],
[Extent1].[OverridePrice] AS [OverridePrice],
[Extent1].[ShippingWeight] AS [ShippingWeight],
[Extent1].[ExtendedPrice] AS [ExtendedPrice],
[Extent1].[OrderId] AS [OrderId],
[Extent1].[ProductItemNo] AS [ProductItemNo],
[Extent1].[ProductItemNoTypeId] AS [ProductItemNoTypeId]
FROM [OrderDetail] AS [Extent1]
WHERE [Extent1].[OrderHeaderId] = 'eec06164-a052-4c23-9575-8fe1b80c8baa' /* @p__linq__0 */
但是,如果我使用以下的语句我没有得到任何结果:
_orderDetails = ctx.OrderDetail.Where(o => o.OrderHeaderId == _order.Id).ToList();
_orderDetails = (from od in ctx.OrderDetail
where od.OrderHeaderId == _order.Id
select od).ToList();
订单表头:
-- Creating table 'OrderHeader'
CREATE TABLE [OrderHeader] (
[Id] uniqueidentifier NOT NULL,
[PONumber] nvarchar(4000) NULL,
[InternalOrderText] nvarchar(4000) NULL,
[TimeStamp] datetime NOT NULL,
[IOCTrackingNo] nvarchar(4000) NULL,
[CarrierCode] nvarchar(4000) NULL,
[HowEntered] nvarchar(4000) NOT NULL,
[MessageName] nvarchar(4000) NOT NULL,
[RepID] nvarchar(4000) NOT NULL,
[BatchID] nvarchar(4000) NOT NULL,
[Status] nvarchar(4000) NOT NULL,
[ApplicationVersion] nvarchar(4000) NOT NULL,
[CustomerAccountID] nvarchar(4000) NOT NULL,
[CustomerSubAccountID] nvarchar(4000) NOT NULL,
[SystemArrivalDate] datetime NULL,
[OrderId] int NOT NULL
);
GO
-- Creating primary key on [Id] in table 'OrderHeader'
ALTER TABLE [OrderHeader]
ADD CONSTRAINT [PK_OrderHeader]
PRIMARY KEY ([Id]);
GO
订单详细信息:
-- Creating table 'OrderDetail'
CREATE TABLE [OrderDetail] (
[Id] uniqueidentifier NOT NULL,
[OrderHeaderId] uniqueidentifier NOT NULL,
[Price] decimal(18,2) NOT NULL,
[Quantity] int NOT NULL,
[OverridePrice] bit NOT NULL,
[ShippingWeight] decimal(18,3) NOT NULL,
[ExtendedPrice] decimal(18,2) NOT NULL,
[OrderId] int NOT NULL,
[ProductItemNo] nvarchar(4000) NOT NULL,
[ProductItemNoTypeId] uniqueidentifier NOT NULL
);
GO
-- Creating primary key on [Id] in table 'OrderDetail'
ALTER TABLE [OrderDetail]
ADD CONSTRAINT [PK_OrderDetail]
PRIMARY KEY ([Id]);
GO
外键:
-- Creating foreign key on [OrderHeaderId] in table 'OrderDetail'
ALTER TABLE [OrderDetail]
ADD CONSTRAINT [FK_OrderDetailOrderHeader]
FOREIGN KEY ([OrderHeaderId])
REFERENCES [OrderHeader]
([Id])
ON DELETE CASCADE ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_OrderDetailOrderHeader'
CREATE INDEX [IX_FK_OrderDetailOrderHeader]
ON [OrderDetail]
([OrderHeaderId]);
GO
你是否检查_order.Id是否是你期望的那样是'eec06164-a052-4c23-9575-8fe1b80c8baa'? – neo
是的,我做过了,这就是我最初得到的ID是在调试时查看订单的。猜猜我也应该发布一些代码。 – Charles380
你可以试试这个吗? ctx.OrderDetail.Where(o => o.OrderHeader.Id == _order.Id).ToList(); – neo