首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OdataController中使用Web服务?

如何在OdataController中使用Web服务?
EN

Stack Overflow用户
提问于 2016-09-27 14:11:58
回答 1查看 294关注 0票数 2

我正在用这个url:http://localhost:7951/odata/Student调用一个服务,但是我遇到了错误

404未找到

我哪里做错了?

我的DbContext类如下所示:

代码语言:javascript
复制
public class DataContext : DbContext
{ 
    public DataContext()
        : base("name=FrameworkConnStr")
    {
    }

    public DbSet<Student> Students { get; set; }
    public DbSet<StudentAddress> StudentAddresses { get; set; }
}

[Table("M_DEMIR.STUDENT")]
public partial class Student
{
    public Student()
    {
        StudentAddress = new HashSet<StudentAddress>();
    }

    [Column("ID"), Key]
    public int Id { get; set; }

    [Column("NAME", TypeName = "varchar2"), MaxLength(25)]
    public string Name { get; set; }

    [Column("SURNAME", TypeName = "varchar2"), MaxLength(50)]
    public string Surname { get; set; }

    public virtual ICollection<StudentAddress> StudentAddress { get; set; }
}

[Table("M_DEMIR.STUDENTADDRESS")]
public partial class StudentAddress
{
    [Column("ID"), Key]
    public int Id { get; set; }

    [Column("STUDENT_ID")]
    public int StudentId { get; set; }

    [Column("CITY", TypeName = "varchar2"), MaxLength(25)]
    public string City { get; set; }

    [ForeignKey("StudentId")]
    public virtual Student Student { get; set; }
}

控制器代码如下:

代码语言:javascript
复制
[EnableQuery]
public class StudentController : ODataController
{
    DataContext db = new DataContext();


    public IHttpActionResult Get()
    {
        return Ok();
    }


}

WebApiConfig代码如下:

代码语言:javascript
复制
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var builder = new ODataConventionModelBuilder();
        builder.EntitySet<Student>("Students");
        builder.EntitySet<StudentAddress>("StudentAddresses");
        config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
    }

我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 14:33:25

代码语言:javascript
复制
[ODataRoutePrefix("Students")]
public class StudentController : ODataController
{
    DataContext db = new DataContext();

    [EnableQuery(MaxTop = 100)] // MaxTop so you can use the $top in the query string
    [ODataRoute]
    public IHttpActionResult Get()
    {
        return Ok(db.Students); // you do want to return something that can be queried
    }
}

将您的url更改为http://localhost:7951/odata/Students (添加了一个s)。

另外,不要忘记通过重写控制器的DbContext方法来释放您的Dispose实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39726985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档