1

我有一个简单的 WCF 服务正在运行,它应该使用 LINQ to SQL 从 Northwind 数据库返回数据。我能够调用服务并返回结果就好了。当我稍微调整一下我的班级时,我得到了正确的行数,但都是空白{}。

这是我使用 LINQ 查询选择的类:

[DataContract]
public class ProductView {
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public short? UnitsInStock { get; set; }
    public ProductView() { }
    public ProductView(Product item) {
        ProductID = item.ProductID;
        ProductName = item.ProductName;
        UnitsInStock = item.UnitsInStock;
    }
}

这是我的 LINQ 查询:

using (NorthwindDataContext context = new NorthwindDataContext("BLAH")) {
   var products = from p in context.Products select new ProductView (p);
   return JsonConvert.SerializeObject(products);
}

Chrome 开发人员将返回的结果显示为“[{},{},{},{}]”,但是如果我在调试时和序列化之前检查对象,我可以看到所有 ProductView 对象及其相关属性。

我知道我错过了一些简单的东西,我只是无法为我的生活弄明白......任何帮助表示赞赏!

4

1 回答 1

2

我猜测通过添加[DataContract]到您的类中,您是在告诉 json 转换器它应该只关注带有[DataMember]属性的属性。由于您的所有属性都没有该属性,因此它们都没有被序列化。

将 DataMember 属性添加到您的属性,或从您的类中删除 DataContract 属性。

于 2013-11-07T19:17:52.003 回答