Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# “如何从数据库访问内容”;不使用主键“;_C#_Entity Framework - Fatal编程技术网

C# “如何从数据库访问内容”;不使用主键“;

C# “如何从数据库访问内容”;不使用主键“;,c#,entity-framework,C#,Entity Framework,ASP网络核心-使用EF核心 表: UserBooksId-主键 UserId-来自另一个表的UserId BookId—来自另一个表的BookId BookToBuy-我保存内容的地方 NrBooksOrdered—订购的图书数量 因此,我不知道如何使用UserId->BookToBuy和NrBooksOrdered,甚至使用具有此UserId的所有主键来访问此表的内容 主键是唯一的,这对我没有多大帮助,因为在数据库中,UserId和bookid可以在数据库中多次出现 例如: UserBook

ASP网络核心-使用EF核心

表:

  • UserBooksId-主键
  • UserId-来自另一个表的UserId
  • BookId—来自另一个表的BookId
  • BookToBuy-我保存内容的地方
  • NrBooksOrdered—订购的图书数量
  • 因此,我不知道如何使用UserId->BookToBuy和NrBooksOrdered,甚至使用具有此UserId的所有主键来访问此表的内容

    主键是唯一的,这对我没有多大帮助,因为在数据库中,UserId和bookid可以在数据库中多次出现

    例如:

  • UserBookId:0 | UserId:1 | BookId:2 | BookToBuy:Wizzard | NrBooksOrdered:2
  • UserBookId:1 | UserId:1 | BookId:2 | BookToBuy:Wizzard | NrBooksOrdered:6
  • UserBookId:2 | UserId:1 | BookId:3 | BookToBuy:LongRoad | NrBooksOrdered:1
  • 正如您所看到的,用户ID没有改变

    谢谢。

    您可以在这里使用基本查询

    /*b是每本书的参考,因此您可以通过bool表达式对其进行过滤*/
    var booksQuery=dbcontext.BooksTable.Where(b=>b.UserId==1&&b.BookId==2);
    /*书籍的类型为IQueryable,因此无法从数据库中检索*/
    /*然而。为此,您可以使用“.ToList()”或“.AsEnumerable()”(即*/
    /*在需要迭代一次结果的用例中更快)*/
    var booksFromDb=booksQuery.AsEnumerable();
    

    有关如何使用EF Core查询数据的详细说明,请始终参阅:

    TableName.Where(z=>conditionhere)
    谢谢。现在它起作用了。我将在linq和Queries上做我的研究还有一件事要补充,我不认为使用UserId我可以获得表的对象,每个主键。我一直认为只有使用主键才能实现这一点。大多数Linq查询直到
    AsEnumerable()
    ToString()
    将被转换为SQL并在SQL Server上执行,以获得更好的性能。@SilviuM不客气。还要记住,如果要迭代结果或一次,请将
    AsEnumerable()
    替换为
    ToString()