如何从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."
不,这是不可能的,因为如果你定义了这个,这意味着复杂类型有导航属性到契约。这在整个实体框架中是不允许的。该错误可能来自一些推断,其中Contract
已被定义为实体,但复杂类型正试图将其映射为其他东西-但这只是猜测。
由于某些原因,你发布的片段对我来说很难阅读。然而,我可以告诉你,我已经通过WCF类型发送了这些。我通常不使用ICollection<>来声明我的列表,我倾向于使用List<>来代替,并且从来没有在客户端接收信息时遇到太多问题。
可能是你在数据契约中如何定义类的问题