我正在尝试将模型发送到wcf服务。 首先我有一个序列化问题,但我通过设置
解决了它ContextOptions.ProxyCreationEnabled = false;
推荐人DataContractSerializer Error using Entity Framework 4.0 with WCF 4.0 但现在模型属性税和产品为空
public ClientWindowViewModel()
{
Ip = ServerWindowViewModel.LocalIP;
db = new STOREDBEntities();
db.Configuration.ProxyCreationEnabled = false;
products = db.Products;//.Where(p => p.IsSynced == false)
}
产品型号
public partial class Product
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Product()
{
this.Categories = new HashSet<Category>();
}
public int Id { get; set; }
public string ProductName { get; set; }
public byte[] Image { get; set; }
public bool IsDeleted { get; set; }
public bool IsSynced { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Category> Categories { get; set; }
public virtual Tax Tax { get; set; }
}
发送到WCF服务器
channel.Update(checkedProducts);
答案 0 :(得分:0)
如果我错了,请纠正我,你想通过WCF合同发送Product类,在发送之后你只得到空值和默认值吗?
如果没有在Product类中设置[DataContract],[DataMember]等适当的注释,则无法通过WCF发送对象。
在类上方设置[DataContract],在每个属性上方设置[DataMember]。如果没有这个,消息将无法正确序列化。
答案 1 :(得分:0)
我认为问题不在WCF中。问题是我正在设置
ContextOptions.ProxyCreationEnabled = false;
它没有获得产品和税
我必须写
.Include("PropertyName")
包含它
Products = dbGet.Products.Include("Categories").Include("Tax").ToList();
但当我尝试将列表发送到服务器时添加.Include("PropertyName")
方法时,我在序列化中获得了异常(关于循环。产品具有产品实例,产品具有类别实例...)
我通过将循环instacnes设置为null来解决它
foreach (var item in products)
{
foreach (var ct in item.Model.Categories)
{
ct.Products = null;
}
item.Model.Tax.Product = null;
}
如果有人知道关于禁用骑行的更好解决方案,请写下来!