gpt4 book ai didi

c# - Asp.Net web api - 如何获取所有记录

转载 作者:行者123 更新时间:2023-12-02 01:07:23 27 4
gpt4 key购买 nike

我是 .Net Web API 的新手。

我想获取所有 CreatedBy = 1 的记录(这不是主键)。

我的模型

public class Subject
{
[Key]
public int Id { get; set; }
public int UniId { get; set; }
public bool IsActive { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public int CreatedBy { get; set; }
public int UpdatedBy { get; set; }
}

Controller 中的get方法

public Subject Get(int id)
{
IQueryable<Subject> query;
return query = from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id).ToList();
}

最佳答案

主要问题是您的 Get Controller 中的方法设置为返回单个 Subject对象,不是 List<Subject> .您的查询看起来正确。

主要的改动需要如下

public List<Subject> Get(int id)
{
IQueryable<Subject> query;
return query = from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id).ToList();
}

附带说明一下,变量名 id是模棱两可的。使用类似 createdById 的东西乍一看会向不经意的观察者表明id变量表示创建了许多 Subjects 的用户而不是 Subject 的 ID .

而且,我会对方法名称说同样的话 Get ... 得到什么? Get 也太接近 C# 关键字 get在属性声明中使用。它应该更具描述性。只是一些不会影响您的问题的快速说明:)

最后我会注意到您从函数返回的方式是非正统的,尽管在技术上是正确的并且可以编译。您可以跳过 return 语句中的变量赋值,甚至完全跳过使用变量而只返回 List<Subject>。 .. 我还为 DataContext 添加了一个 using 语句,这是最佳实践:

public List<Subject> Get(int id)
{
using(var context = new YourDataContext())
{
var queryResult = (from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id)).ToList();
return queryResult;
}
}

或者没有 LINQ 语句,

public List<Subject> Get(int id)
{
using(var context = new YourDataContext())
{
return context.Subjects.Where(v => v.CreatedBy == id)).ToList();
}
}

关于c# - Asp.Net web api - 如何获取所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21057556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com