Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询返回0个结果,但应返回1_C#_Winforms_Entity Framework 4_Linq To Entities_Sql Server Ce 3.5 - Fatal编程技术网

C# Linq查询返回0个结果,但应返回1

C# Linq查询返回0个结果,但应返回1,c#,winforms,entity-framework-4,linq-to-entities,sql-server-ce-3.5,C#,Winforms,Entity Framework 4,Linq To Entities,Sql Server Ce 3.5,我有一个用于存储订单信息的winforms应用程序的SQL Server Compact Edition 3.5版,但有人投诉说,在完成并提交后,细节没有显示出来,通过接收用户的数据库,我可以重现该问题,但我不明白为什么。我想弄清楚的是,为什么它们没有同步,因为其他人工作得很好,我搜索了堆栈溢出,但没有找到适合我的答案 linqpad/SSMS对我收到的数据库的结果是相同的,并作为以下查询的结果显示一行(与entity framework profiler显示的查询相同): 但是,如果我使用以下

我有一个用于存储订单信息的winforms应用程序的SQL Server Compact Edition 3.5版,但有人投诉说,在完成并提交后,细节没有显示出来,通过接收用户的数据库,我可以重现该问题,但我不明白为什么。我想弄清楚的是,为什么它们没有同步,因为其他人工作得很好,我搜索了堆栈溢出,但没有找到适合我的答案

linqpad/SSMS对我收到的数据库的结果是相同的,并作为以下查询的结果显示一行(与entity framework profiler显示的查询相同):

但是,如果我使用以下任一语句,则不会得到任何结果:

_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

我和其他几个人无法找出链接断开的原因,因此我决定将数据库更改为
SQL CE 4.0
,因为可以使用
int-identity
字段,从那以后我们就没有出现过这个问题。

您是否检查了_order.Id是否是您期望的,即“eec06164-a052-4c23-9575-8fe1b80c8baa”?是的,这就是我最初通过在调试时查看订单获得Id的方式。我想我也应该发布一些代码。你能试试这个吗?其中(o=>o.OrderHeader.Id===\u order.Id.ToList();已经试过了,它隐藏在一个相当长的问题中。你有这个o.OrderHeaderId而不是o.OrderHeader.Id
-- 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