如何从WCF数据服务返回复杂类型

本文关键字:返回 复杂 类型 服务 数据 WCF | 更新日期: 2023-09-27 17:50:03

是否有可能从由实体类型集合组成的WCF数据服务返回复杂类型?

例如:

 //the complex type to return
 class Entities
 {
    ICollection<Contract> Contracts;
    ...
 }
 //configuration
 public partial class MyContext: DbContext
 {
    public MyContext()
        : base("name=DBEntities")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.ComplexType<Entities>();
        modelBuilder.Entity<Contract>().HasKey(c=>c.Id);
        ...
    }
    ...
  }
 //the WCF Data Service
 public class PricingDataService : DataService<ObjectContext>, IDisposable
 {
     [WebGet]
     public Entities GetEntities()
     {
         return new Entities();
     }
  }

当我尝试上述配置时,我得到一个异常:

" The exception message is 'One or more validation errors 
were detected during model     generation: System.Data.Edm.EdmEntityType: Name: 
Each type name in a schema must be unique. Type name 'Contract' was already 
defined."

如何从WCF数据服务返回复杂类型

不,这是不可能的,因为如果你定义了这个,这意味着复杂类型有导航属性到契约。这在整个实体框架中是不允许的。该错误可能来自一些推断,其中Contract已被定义为实体,但复杂类型正试图将其映射为其他东西-但这只是猜测。

由于某些原因,你发布的片段对我来说很难阅读。然而,我可以告诉你,我已经通过WCF类型发送了这些。我通常不使用ICollection<>来声明我的列表,我倾向于使用List<>来代替,并且从来没有在客户端接收信息时遇到太多问题。

可能是你在数据契约中如何定义类的问题