Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc LINQ到实体,连接类型错误_Asp.net Mvc_Linq_Entity Framework - Fatal编程技术网

Asp.net mvc LINQ到实体,连接类型错误

Asp.net mvc LINQ到实体,连接类型错误,asp.net-mvc,linq,entity-framework,Asp.net Mvc,Linq,Entity Framework,我有一个问题看起来是这样的 var q = Dal.TBLINVENTORies.Where(i => i.SHOWIT); q = q.Where(i => i.dtStart < DateTime.Now || i.dtStart == null); q = q.Where(i => i.dtEnd > DateTime.Now || i.dtEnd == null); q = q.Where(i => i.sSystem.Contains("O

我有一个问题看起来是这样的

var q = Dal.TBLINVENTORies.Where(i => i.SHOWIT);
q = q.Where(i => i.dtStart < DateTime.Now || i.dtStart == null);
q = q.Where(i => i.dtEnd > DateTime.Now || i.dtEnd == null);
q = q.Where(i => i.sSystem.Contains("OE"));
q = q.Where(i => i.WS_ActiveList_ID == 0 || i.tblWS_ActiveList.WS_MasterList_ID == 16);
var test2 = q.ToList();
以及WS_ActiveList_ID的定义:

[WS_ActiveList_ID] [int] NOT NULL CONSTRAINT [DF_TBLINVENTORY_WS_ActiveList_ID] DEFAULT (0),

您的主要问题是已关闭数据库中的引用完整性检查

除了坏数据这一明显的问题外,这对EF不起作用

到目前为止,最好的选择是使
WS\u ActiveList\u ID
为空,更新数据以将所有
0
s更改为
NULL
s并重新启用约束


如果您不能做到这一点,我认为您必须生成一个SQL语句作为字符串,并使用
dbContext.Database.SqlQuery
()

执行它。您能说明如何配置与WS_ActiveList的关系吗?它是一个可为空的关系,还是使用0表示空关系?0表示。你想让我挖掘什么数据并展示出来?我将获取关系的SQL定义…让我知道您是否需要其他内容。尝试将FK属性更改为可空。我对进行此更改有一些遗留问题(我想你是说让SQL定义中的
tblInventory.WS\u ActiveList\u ID
不,
not NULL
?EF假设0或1到多使用NULL表示0。我知道在EF中没有任何方法可以使连接工作,其中值为0表示无连接。尽管你可能会将连接公式化为排除0:D)s、 我想有人会对此发表评论,“问题”是这是一个旧的(12岁或以上)遗留系统,一开始就没有任何关键关系,更不用说RI了…现在我正在用asp.net mvc和EF编写应用程序的一部分,我开始根据需要添加它们,但是,只是部分地,因为所有遗留数据都已经存在,否则会失败…不久的将来,我们将开始修复这些数据e数据端,并加入RI,但现在,这是我们得到的。您能指出,不修复db会为您带来更多的工作,当db最终修复时,这些工作将被扔掉吗?我不完全相信这一点,但是,考虑到我目前在完成该项目方面的时间限制,我不能节省del唉,修复它需要
-- create foreign key, but don't enforce on existing values
ALTER TABLE [dbo].[tblInventory]  --the ONE Table
    WITH NOCHECK 
    ADD CONSTRAINT [FK__tblInventory.WS_ActiveList_ID__tblWS_ActiveList.ID] 
        FOREIGN KEY([WS_ActiveList_ID]) 
            REFERENCES [dbo].[tblWS_ActiveList] ([ID])    --the MANY Table
        NOT FOR REPLICATION
GO

-- disable enforcement of the foreign key, but leave it in place (virtual key)
ALTER TABLE [dbo].[tblInventory]  
    NOCHECK CONSTRAINT [FK__tblInventory.WS_ActiveList_ID__tblWS_ActiveList.ID] 
GO
[WS_ActiveList_ID] [int] NOT NULL CONSTRAINT [DF_TBLINVENTORY_WS_ActiveList_ID] DEFAULT (0),