加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 为什么我的超级简单的ASP.NET Web API(mvc4)

发布时间:2020-12-16 00:11:02 所属栏目:asp.Net 来源:网络整理
导读:我花了好几天才知道我工作的问题,但没有运气. 我创建了新的MVC4 Web API项目. 使用我的数据库添加EF5(项目添加 ADO.NET实体数据模型从Azure SQL中的数据库创建). 将两个表添加到edmx,如下所示.两个* .tt文件成功生成实体和模型类. 我可以看到断点(结果)正常
我花了好几天才知道我工作的问题,但没有运气.

>我创建了新的MVC4 Web API项目.
>使用我的数据库添加EF5(项目>添加> ADO.NET实体数据模型>从Azure SQL中的数据库创建).
>将两个表添加到edmx,如下所示.两个* .tt文件成功生成实体和模型类.

我可以看到断点(结果)正常给出查询结果.
但json提供异常流而没有错误消息. (即,http:// localhost:41813 / api / sheet / 157返回“157”,无法下载.一般情况下,“157.json”已下载)

我将结果中的属性复制到我手工制作的POCO风格的类中,并且它有效.

我的问题是什么?我无法使用生成的模型类通过Json发送数据.
我几乎没有发现问题,因为在结果断点之后没有错误消息和可用的调试步骤.

解决方法

序列化失败的原因是您的导航属性 – 当序列化程序尝试遍历对象图时,它们会导致循环依赖.

为了使您的简单样本工作,您几乎没有办法解决它.

>从SheetDetail中删除导航属性表
>在ViewModel类中包装您的对象,省略Navigation属性表
>使用JsonIgnoreAttribute创建元数据类,然后使用partial class和MetadataTypeAttribute将其附加到您的实体

在这里你可以找到第三个解决方案的样本(样本做了一些假设,因为我不知道你的确切数据类型):

public class SheetDetailSerializationMetadata
{
    [JsonIgnore]
    public Sheet Sheet { get; set; }
}

[MetadataType(typeof(SheetDetailSerializationMetadata))]
public partial class SheetDetail
{ 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读