【发布时间】:2019-10-02 18:51:10
【问题描述】:
所以我目前正在学习如何使用 ASP.NET 构建 Web 服务 (ASMX) 来完成我的作业。我将 SQL Server 数据库和 ADO.NET 用于数据模型。这是我的数据库:
这是生成的模型
用户.cs
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
this.Posts = new HashSet<Post>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Post> Posts { get; set; }
}
Post.cs
public partial class Post
{
public int Id { get; set; }
public int UserId { get; set; }
public string Comment { get; set; }
public virtual User User { get; set; }
}
我正在尝试使用类似这样的方法从 WebService.asmx 获取数据
[WebMethod]
public List<Post> GetAllPosts()
{
using (var db = new DatabaseEntities())
{
return db.Posts.ToList();
}
}
当我运行服务时,它给了我这个错误:
无法序列化类型的成员 WebService.Models.User.Posts System.Collections.Generic.ICollection`1[[WebService.Models.Post, WebService,版本=1.0.0.0,文化=中性,PublicKeyToken=null]] 因为它是一个接口。描述:未处理的异常 在执行当前 Web 请求期间发生。请 查看堆栈跟踪以获取有关错误和位置的更多信息 它起源于代码。
异常详细信息:System.NotSupportedException:无法序列化 成员 WebService.Models.User.Posts 类型 System.Collections.Generic.ICollection`1[[WebService.Models.Post, WebService,版本=1.0.0.0,文化=中性,PublicKeyToken=null]] 因为它是一个接口。
我有点知道这个错误是由 User 和 Post 之间的关系引起的,但我不完全明白为什么。对发生的事情有什么好的解释吗?我可以用来解决这个问题的最佳方法是什么?
【问题讨论】:
-
如果您的课程正在教您 ASMX 和 EDMX,那么它们已经严重落后于时代。该行业已经远离这些技术。您可能需要重新考虑您的教育来源。
标签: c# asp.net web-services