从表中选择要使用WebAPI和实体框架序列化为JSON的列?

从表中选择要使用WebAPI和实体框架序列化为JSON的列?,json,angularjs,entity-framework,asp.net-web-api,json.net,Json,Angularjs,Entity Framework,Asp.net Web Api,Json.net,我在AngularJS项目中使用实体框架和WebAPI。到目前为止,数据库中的整个表都转换为JSON,但我实际上只需要3列。有什么简单的方法可以解决这个问题吗 更新:这是使用实体框架自动生成的控制器。该表包含包含项目信息的列,如“projectd”、“project name”、“Customer name”等。我只需要其中的两个,比如“projectd”和“project name” 使用系统; 使用System.Collections.Generic; 使用系统数据; 使用System.Da

我在AngularJS项目中使用实体框架和WebAPI。到目前为止,数据库中的整个表都转换为JSON,但我实际上只需要3列。有什么简单的方法可以解决这个问题吗

更新:这是使用实体框架自动生成的控制器。该表包含包含项目信息的列,如“projectd”、“project name”、“Customer name”等。我只需要其中的两个,比如“projectd”和“project name”

使用系统;
使用System.Collections.Generic;
使用系统数据;
使用System.Data.Entity;
使用System.Data.Entity.Infrastructure;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
使用System.Web.Http.Description;
使用RetGet;
命名空间RetGet.controllers
{
公共类项目控制器:ApiController
{
private censoredname db=new censoredname();
//获取:api/项目
公共IQueryable GetProject()
{
返回数据库项目;
}
//获取:api/Projects/5
[响应类型(项目类型))]
公共IHttpActionResult GetProject(int id)
{
Project=db.Project.Find(id);
如果(项目==null)
{
返回NotFound();
}
返回Ok(项目);
}
//PUT:api/Projects/5
[响应类型(typeof(void))]
公共IHttpActionResult PutProject(内部id,项目)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
if(id!=project.ProjectId)
{
返回请求();
}
db.Entry(project.State=EntityState.Modified;
尝试
{
db.SaveChanges();
}
catch(DbUpdateConcurrencyException)
{
如果(!ProjectExists(id))
{
返回NotFound();
}
其他的
{
投掷;
}
}
返回状态码(HttpStatusCode.NoContent);
}
//职位:空气污染指数/工程
[响应类型(项目类型))]
公共IHttpActionResult后项目(项目)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
db.Project.Add(项目);
db.SaveChanges();
返回CreatedAtRoute(“DefaultApi”,新的{id=project.ProjectId},project);
}
//删除:api/Projects/5
[响应类型(项目类型))]
公共IHttpActionResult删除项目(内部id)
{
Project=db.Project.Find(id);
如果(项目==null)
{
返回NotFound();
}
db.Project.Remove(项目);
db.SaveChanges();
返回Ok(项目);
}
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
db.Dispose();
}
基地。处置(处置);
}
私有布尔项目存在(内部id)
{
返回db.Project.Count(e=>e.projectd==id)>0;
}
}

}

在大量的谷歌搜索之后,似乎在使用EF 6时,您必须使用JSON.NET[DataContract]和[DataMember]。参见示例

 [DataContract]
public partial class Project
{
    [DataMember]
    public int ProjectId { get; set; }
    public string PROJECT_NUMBER { get; set; }
    public string PROJECT_NAME { get; set; }
    [DataMember]
    public string LONG_NAME { get; set; }
    public decimal CUSTOMER_ID { get; set; }
    public string CUSTOMER_NAME { get; set; }
}

当然,你可以做过滤,如果你添加你的控制器方法,我们可以看到你在做什么,它可能会帮助人们回答你的问题…@BrianRogers很难将答案中的代码与我的关联起来。如果我错了,请纠正我,我已经发布了控制器的代码。@MariusMathisen我最初链接的问题在这里不适用。最初,您的问题说您试图筛选结果,使其仅包含某些行。但现在您已经在问题中添加了更多信息,似乎您正在尝试排除列。这是另一个问题。然而,我仍然相信这个问题是重复的:看。@BrianRogers谢谢你,Brian。但我实际上是通过使用DataContract和DataMember实现的。参见我的答案。
[DataContract]
[DataMember]
实际上不是Json.Net的一部分,尽管Json.Net尊重它们。这些属性由Microsoft在中定义。与Json.Net等效的属性是
[JsonObject(MemberSerialization.OptIn)]
[JsonProperty]
 [DataContract]
public partial class Project
{
    [DataMember]
    public int ProjectId { get; set; }
    public string PROJECT_NUMBER { get; set; }
    public string PROJECT_NAME { get; set; }
    [DataMember]
    public string LONG_NAME { get; set; }
    public decimal CUSTOMER_ID { get; set; }
    public string CUSTOMER_NAME { get; set; }
}