在SubmitChanges之后,WCF RIA服务POCO实体属性变为空

时间:2014-06-09 11:29:24

标签: c# linq-to-sql poco wcf-ria-services

我的解决方案中有一个POCO对象,它有一些Entity个对象作为属性。我在许多其他类中已经完成了这个,但是当基类是POCO而不是另一个Entity时,我没有这样做。

以下是该类的服务器端版本:

public partial class ItemLocationPricingDetail
{
    public ItemLocationPricingDetail()
    {

    }

    [Key]
    [DataMember]
    public int ItemLocationDetailId
    {
        get;
        set; //get { return _itemLocationDetail.Id; }                
    }

    [DataMember]
    public int ItemMasterId
    {
        get 
        {
            if (ItemLocationDetail == null) return 0;
            return ItemLocationDetail.ItemMaster.ItemMasterId; 
        }
    }

    private EntityRef<ItemLocationDetail> _itemLocationDetail;
    [DataMember]
    //[Include()]
    //[Association("ParentChild", "ItemLocationDetailId", "Id", IsForeignKey = false)]
    public ItemLocationDetail ItemLocationDetail
    {
        get { return _itemLocationDetail.Entity; }
        set { _itemLocationDetail.Entity = value; }
    }

    [DataMember]
    public ItemMaster ItemMaster
    {
        get 
        {
            if (ItemLocationDetail == null) return null;
            return ItemLocationDetail.ItemMaster; 
        }
        set { ItemLocationDetail.ItemMaster = value; }
    }

    private decimal _newPrice;
    [DataMember]
    public decimal NewPrice
    {
        get { return _newPrice; }
        set { _newPrice = value; }
    }
}

我确实有一个客户端部分类,但是它不会处理任何这些属性。

我还有一个元数据类如下:

[MetadataTypeAttribute(typeof(ItemLocationPricingDetail.ItemLocationPricingDetailMetadata))]
public partial class ItemLocationPricingDetail
{
    internal sealed class ItemLocationPricingDetailMetadata
    {
        [Key]
        public int ItemLocationDetailId { get; set; }

        [Include]
        [Association("ItemLocationDetailAssociation", "ItemLocationDetailId", "Id")]
        public EntityRef<ItemLocationDetail> ItemLocationDetail { get; set; }

        [Include]
        [Association("ItemMasterAssociation", "ItemMasterId", "ItemMasterId")]
        public EntityRef<ItemMaster> ItemMaster { get; set; }
    }
}

问题是我对ItemLocationDetail属性的属性进行了简单修改。然后我在SubmitChanges上拨打DataContext,这完全没问题。问题是,在完成后,某事尝试访问ItemLocationPricingDetail类中的某些属性,但由于某种原因,ItemLocationDetail现在为空。这就是为什么整个班级都对该属性进行空检查,这样我就可以尝试查看问题所在,但我无法找到问题。

我猜测在调用ItemLocationPricingDetail后更新SubmitChanges类时会发生这种情况,但我不确定RIA服务在该级别的工作情况。

正如您所看到的,ItemLocationDetail属性周围有一些注释掉的代码,虽然编译并且没有给出错误,但问题仍然存在。这是我在互联网上找到的与此问题有关的唯一信息。

有人可以提出任何建议吗?如果您需要更多信息,我会提供。

感谢。

0 个答案:

没有答案