2012-07-16 99 views
0

序列化我尝试写与WCF(REST)服务的演示,我用LinqToSQL为我的数据库操作。 当我尝试在我的域对象上发布[DataContract]或[Serializable]时,它无法序列化为JSON。我只能在我的浏览器中获得一对“{}”。删除[DataContract]或[Serializable]属性后,它会再次变为正常。DataContract在WCF服务

[DataContract] 
public partial class MyDoc{ } // a Linq To SQL domain class 

get方法:

[WebGet(UriTemplate = "GetMyDoc/{docID}",ResponseFormat=WebMessageFormat.Json)]  
    [ServiceKnownType(typeof(MyDoc))] 
    public WcfRESTfulTest.Db.MyDoc GetMyDoc(string docID) 
    { 
     WcfRESTfulTest.Db.DbDataContext db = new DbDataContext(); 
     var query = db.MyDocs.Where(d => d.DocID.Equals(Int32.Parse(docID))); 
     return query.FirstOrDefault(); 
    } 

回答

0

如果不使用[DataContract]属性,所有的公共属性将被序列化。如果您确实使用它,则必须使用[DataMember]属性选择要序列化的属性。

+0

在正常WCF服务具有的WebHttpBinding,我发现像mydoc._DocID一些性质与[Serializable接口]和mydoc.DocID&mydoc.DocIDSpecified(布尔)在我使用[DataContract]仅客户端。 – Ericpoon 2012-07-16 09:13:36