C# 在实体框架中使用不带主键的只读表

C# 在实体框架中使用不带主键的只读表,c#,sql-server,asp.net-mvc,entity-framework,linq,C#,Sql Server,Asp.net Mvc,Entity Framework,Linq,使用具有只读数据库和没有主键的表的客户端。我正在尝试比较一个表,其中一个表项有一个主表和Pics[无键],以便从有图片的表项中获得结果。每个项目是否在图片中有图片。我无法在SQL中编辑数据库本身 我的最终目标是返回只有图片的结果 我尝试使用原始SQL查询,然后将其转换为IQueryable,但是这不允许我使用其他参数搜索项目,而且速度非常慢。在item表中可能有75+列和10000+个项目,我只能知道如何使用带有“SELECT*”的查询 控制器: entities db = new entiti

使用具有只读数据库和没有主键的表的客户端。我正在尝试比较一个表,其中一个表项有一个主表和Pics[无键],以便从有图片的表项中获得结果。每个项目是否在图片中有图片。我无法在SQL中编辑数据库本身

我的最终目标是返回只有图片的结果

我尝试使用原始SQL查询,然后将其转换为IQueryable,但是这不允许我使用其他参数搜索项目,而且速度非常慢。在item表中可能有75+列和10000+个项目,我只能知道如何使用带有“SELECT*”的查询

控制器:

entities db = new entities();

var results = (from s in db.items
                           select s);

...

var Pics = db.Database.SqlQuery<Item>(
"SELECT * FROM dbo.Pics
AS p JOIN dbo.item
AS i ON 
i.item = p.item
WHERE p.Pic = 'Yes'").AsQueryable(); 

...

results = Pics;

...

return View(results);

试试这个

var结果=以db.items表示的i 在db.Pics中加入p 关于i项等于p项 其中p.Pic==是 选择i;
我不明白I.item=p.item。这是item表中item的主键和Pics表中item的外键吗?它是item的主键。如果表设计正确,它将是pics下项目的外键。然而,我使用的是一个设计不正确的表,因此我不认为它在技术上是一个外键,尽管我试图将其视为两列的数据相同,因此应该非常简单地转换为LINQ。我的问题是我不知道如何在实体框架中访问Pics表而不使用SQL查询,因为它没有键。Pics表未在我的edmx中编译。有没有办法将LINQ用于不在模型中的表?edmx文件是如何生成的,这使得Pics数据库或Pics表无法生成?是否使用Visual Studio和designer视图生成?。我无法获取Edmx文件以生成Pics表,因为它没有主键,因此“db.Pics”不起作用。这就是我的主要问题所在。是的,我现在明白了。它允许您创建多个列的复合键吗?就表和数据库而言,我不能对它们做任何事情。它们完全是只读的。我可能可以在我的应用程序中使用它们,但我不确定如何使用它们。但是,当我从数据库更新模型时,该表没有显示在我的设计器中。您是否可以使用数据库中的“代码优先”来代替?一旦我转换为“代码优先”,解决方案就可以工作了。因此,虽然我可以自己找出你发布的答案,但我可能不会想到先转换成代码。非常感谢你!