Mou*_*him 11 rest entity-framework ef-code-first asp.net-mvc-3 wcf-web-api
我对这个问题感到不满.我确实在互联网上找到了一些关于它的内容,但不是一个明确的答案.我的问题:
我必须在MVC3 Web应用程序的Model部分中的类:ParentClass和ChildClass在ParentClass上有一个属性子类型List
我使用了EF Code First,它在数据库中为我整齐地生成了父表和子表.
现在我需要一个REST服务,它返回一个List或一个ParentClass.
当我从ParentClass中删除属性Children时没有问题.但随着孩子们的到来,我不断收到错误.
错误: "The type System.Data.Entity.DynamicProxies.ParentClass_A0EBE0D1022D01EB84B81873D49DEECC60879FC4152BB115215C3EC16FB8003A was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically."}
一些代码:
类别:
public class ParentClass
{
public int ID { get; set; }
public string Name {get;set;}
public virtual List<ChildrenClass> Children { get; set; }
}
public class ChildrenClass
{
public int ID { get; set; }
public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
服务:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyService
{
static MyContext db;
public MyService() { db = new MyContext(); }
[WebGet(UriTemplate = "")]
public List<ParentClass> GetParents()
{
var result = db.Parents.ToList();
return result;
}
Run Code Online (Sandbox Code Playgroud)
callinh这项服务时我不会得到结果.我究竟做错了什么?
Mou*_*him 12
我不得不在上下文配置中使用DisableProxyCreation:
[OperationContract]
[WebGet(UriTemplate = "")]
public List<ParentClass> GetParents()
{
using (DBContext context = new DBContext())
{
context.Configuration.ProxyCreationEnabled = false;
List<ParentClass> parents = context.Parents
.Include("Children")
.ToList();
return parents;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说很好.
| 归档时间: |
|
| 查看次数: |
9286 次 |
| 最近记录: |