系列化POCO代理當我跑我的服務我得到異常:與WCF
服務器遇到錯誤處理請求。異常消息是'Can not serialize parameter of parameter type of System.Data.Entity.DynamicProxies.Cosik_14C2 ...'(對於操作'GetCosik',契約'ICosikService'),因爲它不是確切類型'Project.Domain.Entities.Cosik '在方法簽名中,不在已知類型集合中。爲了序列化參數,請將類型添加到使用ServiceKnownTypeAttribute的操作的已知類型集合中。'。查看服務器日誌獲取更多詳細信
我是新來的WCF服務和實體框架,我會很感激任何幫助/建議。
我正在使用實體框架4.1。使用代碼首先,我創建的數據庫有兩個表:
[DataContract(IsReference=true)]
public class Cosik
{
[DataMember]
public int cosikID { get; set; }
[DataMember]
public string title { get; set; }
[DataMember]
public int DifficultyID { get; set; }
[DataMember]
public virtual Difficulty Difficulty { get; set; }
}
[DataContract(IsReference=true)]
public class Difficulty
{
[DataMember]
public int DifficultyID { get; set; }
[DataMember]
[Required]
public string NameToDisplay { get; set; }
}
接下來,我創建的WCF服務應用程序,並使其RESTful的。下面是用於接口代碼:
[ServiceContract]
public interface ICosikService
{
[OperationContract]
[ApplyDataContractResolver]
[WebGet(UriTemplate = "/cosik")]
Cosik GetCosik();
}
和執行合同的是
public class RecipeService : IRecipeService
{
//repository of Cosik entities - stores collection of all
//Cosik entities that can be queried from DB
private ICosikRepository cosikRepo;
...
public Cosik GetCosik()
{
Cosik c = cosikRepo.GetById(1);
return c;
}
的我實現ApplyDataContractResolverAttribute類上給出:http://msdn.microsoft.com/en-us/library/ee705457.aspx並加入[ApplyDataContractResolver]註釋GetCosik方法。但是,它沒有幫助。
任何建議我錯過了什麼?
它看起來像* Cosik *在你的服務操作GetCosik()和已標記因爲數據合同與您實體模型中定義的* Cosik *不同,並且您的服務因某種原因試圖返回。 – 2012-01-17 20:53:32
如果使用'context禁用[ObjectContext](http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx)中的延遲加載,是否還會出現相同的錯誤。 ContextOptions.LazyLoadingEnabled = false'? – 2012-01-18 09:32:04
您可以在RecipeService類上面添加[KnownType(Cosik)]嗎? – Rajesh 2012-01-18 10:24:24