确定这是发生了什么。我有两个应用程序 - 一个WCF数据服务和一个MVC应用程序。Context.UpdateObject()不传递对象中的集合
我们正在审查一个有两个集合的类型。的简单类型
[DataServiceKey("Id")]
[ETag("ModifiedDate")]
public class AllocationRule
{
public AllocationRule()
{
Zones = new List<Zone>();
}
public int Id { get; set; }
public string Name { get; set; }
public List<Zone> Zones { get; private set; }
}
区域如下所示
[DataServiceKey("Code")]
[EntityPropertyMapping("Name", SyndicationItemProperty.Title, SyndicationTextContentKind.Plaintext, true)]
[EntityPropertyMapping("ModifiedDate", SyndicationItemProperty.Updated, SyndicationTextContentKind.Plaintext, true)]
[ETag("ModifiedDate")]
public class Zone
{
public string Code { get; set; }
public string Name { get; set; }
public DateTime? ModifiedDate { get; set; }
}
所以MVC网站试图插入像这样
var context = new ChannelData(new Uri(ConfigurationManager.AppSettings["DataServicesUri"]));
context.AddToAllocationRules(rule);
context.SaveChanges();
的对象,当我们这样做,区域的集合在odata方面始终为空,并且在MVC方面不为空。
有什么想法?我们不能使用提琴手等来嗅探请求,因为我们仍处于本地开发阶段。
更新
当我们使用一个WinForms应用此相同的数据类型回发到WCF数据服务,我们没有看到这些藏品无论是。
看起来好像他们在帖子请求中迷路了。
我们可以从服务中检索数据,$ expand()工作。
下面是来自Fiddler2
<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><category term=" Data.Services.Entities.AllocationRule" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<id /><title type="text">dfsdsdf</title><published>0001-01-01T00:00:00-05:00</published>
<updated>2012-09-18T15:44:36-04:00</updated><author><name />
</author><content type="application/xml"><m:properties><d:Amount m:type="Edm.Int32">50</d:Amount><d:CreatedBy m:null="true" />
<d:CreatedDate m:type="Edm.DateTime">0001-01-01T00:00:00</d:CreatedDate><d:EffectiveEndDate
m:type="Edm.DateTime">2012-12-18T15:44:30.1686832-05:00</d:EffectiveEndDate><d:EffectiveStartDate
m:type="Edm.DateTime">2012-09-19T15:44:30.1696833-04:00</d:EffectiveStartDate><d:Enabled
m:type="Edm.Boolean">true</d:Enabled><d:Finalized m:type="Edm.Boolean">false</d:Finalized><d:Id
m:type="Edm.Int32">0</d:Id><d:ModifiedBy m:null="true" /><d:ModifiedDate m:type="Edm.DateTime"
m:null="true" />
<d:Name>dfsdsdf</d:Name><d:UnitOfMeasure>hours</d:UnitOfMeasure></m:properties></content></entry>
你甚至可以在本地使用fiddler,只要确保你使用的是http:// machinename而不是http:// localhost - 并且它应该可以工作。除此之外,你的意思是“收集在数据方面是无效的”?你是怎么检查的? –
抱歉,标签之前没有ASP.NET MVC。更新问题以显示结果与提琴手。 – PaulBinder