WCF 和实体框架 4.1 POCO
Posted
技术标签:
【中文标题】WCF 和实体框架 4.1 POCO【英文标题】:WCF and Entity framework 4.1 POCO 【发布时间】:2012-03-05 06:38:08 【问题描述】:`我有以下实体框架4.1模型。
public partial class AWLTR2Model : DbContext
public AWLTR2Model()
: base("name=AWLTR2Model")
Configuration.ProxyCreationEnabled = false;
protected override void OnModelCreating(DbModelBuilder modelBuilder)
throw new UnintentionalCodeFirstException();
public DbSet<Address> Addresses get; set;
public DbSet<Customer> Customers get; set;
public DbSet<CustomerAddress> CustomerAddresses get; set;
我有以下 POCO 实体,它位于不同的名称空间 AWLTR2.Entity
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
public partial class CustomerAddress
public int CustomerID get; set;
public int AddressID get; set;
public string AddressType get; set;
public System.Guid rowguid get; set;
public System.DateTime ModifiedDate get; set;
public virtual Address Address get; set;
public virtual Customer Customer get; set;
我通过 WCF 服务 (BasicHTTPBinding) 公开了这些实体,但在我的客户端中,我无法将子实体添加到父实体,如下所示。
Customer c = new Customer
FirstName = "xx",
CompanyName = "zz",
EmailAddress = "xx@a.com",
LastName = "yy",
ModifiedDate = DateTime.Now,
NameStyle = false,
PasswordHash = "abcd",
PasswordSalt = "abcd",
Phone = "xx",
rowguid = System.Guid.NewGuid()
;
CustomerAddress ca = new CustomerAddress
AddressID = 9 ,
Customer = c ,
AddressType ="Home Office",
ModifiedDate=System.DateTime.Now,
rowguid = System.Guid.NewGuid()
;
客户端中缺少 add 方法,但我可以在不暴露 WCF 的情况下执行此操作。 如下所示。 c.CustomerAddresses.Add(ca);
我想写一个方法来一次性添加客户以及地址和客户地址。我使用带有对象上下文的实体框架 4.0 实现了相同的目标。但在 Dbcontext 中无法这样做。
有什么线索吗?
【问题讨论】:
【参考方案1】:如果客户端上不存在 Add
方法,则很可能意味着您已将服务引用添加到 WCF 服务,但您没有更改集合的默认类型 - 默认为数组。
配置您的服务参考并在高级设置中将集合类型更改为列表。
【讨论】:
以上是关于WCF 和实体框架 4.1 POCO的主要内容,如果未能解决你的问题,请参考以下文章