【问题标题】:SQL Server to MVC4 Web API?SQL Server 到 MVC4 Web API?
【发布时间】:2012-06-18 09:13:13
【问题描述】:

我在 ASP.Net Web API 中创建了一个新项目,但无法将数据从模型拉到控制器。到目前为止,我已经尝试了一些方法,并阅读了来自http://www.asp.net/web-api 的教程,但是通过精细拉到模型的表数据并没有到达控制器以进行端点访问。这些操作是否需要特定的方法,因为教程中使用的模拟数据在相同的结构下可以正常工作?

界面:

public interface ISkillRepository
{
    IEnumerable<Skill> GetAll();
    Skill Get(int id);
    Skill Add(Skill item);
    void Remove(int id);
    bool Update(Skill item);
}

型号:

public IEnumerable<Skill> GetAll()
    {
        using (var db = new XXXEntities())
        {
            var skills = db.Skill.ToList();
            return skills;
        }
    }

控制器:

static readonly ISkillRepository repository = new SkillsRepository();

    public IEnumerable<Skill> GetAllSkill()
    {
        return repository.GetAll();
    }

模型成功调用数据库并检索信息,但是它没有成功传递给作为端点访问的控制器。将模型代码拉入控制器也可以成功执行,但在请求时仍会抛出 500。没有关于不正确的返回类型等的错误。任何帮助将不胜感激。

【问题讨论】:

  • 究竟是什么问题?您是否遇到错误,如果是,那是什么?是否设置了断点并单步执行了代码?
  • 是的,我设置了断点,这就是为什么我摸不着头脑,即使在控制器中使用数据库获取代码(调试在此调用中显示正确的数据),调用时它仍然没有成功.
  • 原来这是一个序列化程序问题,一旦我解决了这个问题,我会发布代码。

标签: sql-server asp.net-mvc-4 asp.net-web-api


【解决方案1】:

EF 4.1 - Code First - JSON Circular Reference Serialization Error 的解决方案是从关系中删除“虚拟”类型:

public /*virtual*/ ICollection<Skill> Skill { get; set; }

return accessibility + (accessibility != "private" ? "" : "");

而不是:

return accessibility + (accessibility != "private" ? " virtual " : "");

如果使用模型生成器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多