【问题标题】:ASP.NET Web Service Using Relational Database ADO.NET Model使用关系数据库 ADO.NET 模型的 ASP.NET Web 服务
【发布时间】: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


【解决方案1】:

问题是您的 Post 是 ICollection 并且您无法序列化接口。看看this 是否有助于解决。

【讨论】:

  • 它确实有效,但我想知道除了手动更改默认生成的模型之外是否还有其他方法......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多