我有服务器和客户端上的以下类
public class Entity
{
public string Id {get; set;}
public string Name {get; set;}
public Dictionary<string, object> DynamicProperties {get; set;}
}
据我所看到开放式的所有示例介绍了有关在服务器端具有动态特性,但在客户端上的属性必须明确declared.When我发送来自客户端的POST请求如何发送的动态特性?。 我不能宣布在客户端上的所有动态属性。 有许多属性和每个对象将包含不同的一组中的客户端的动态特性。 这些动态特性被存储在客户端侧的DynamicProperties字典。 如何上面的实体类的对象发送到服务器端,从而使服务器将解释DynamicProperties的内容字典作为动态属性? 任何帮助表示赞赏。
===========================后续萨姆的回答================= ======
static void Main(string[] args1)
{
container.Customers.ToList();
Customer newCustomer = new Customer();
newCustomer.Id = 19;
newCustomer.Properties = new Dictionary<string, object>
{
{"IntProp", 9},
{"DateTimeOffsetProp", new DateTimeOffset(2015, 7, 16, 1, 2, 3, 4, TimeSpan.Zero)},
{"blah","ha"}
};
try
{
addCustomer(newCustomer);
container.AddToCustomers(newCustomer);
container.SaveChanges();
}
catch (Exception)
{
}
Customer newCustomer1 = new Customer();
newCustomer1.Id = 20;
newCustomer1.Properties = new Dictionary<string, object>
{
{"IntProp", 10},
{"dir","north"}
};
addCustomer(newCustomer1);
container.AddToCustomers(newCustomer1);
container.SaveChanges();
newCustomer1.Properties["dir"] = "south";
container.UpdateObject(newCustomer1);
container.SaveChanges();
Console.ReadKey();
}
private static void addCustomer(Customer customer)
{
container.Configurations.RequestPipeline.OnEntryStarting(args =>
{
foreach (var property in customer.Properties)
{
args.Entry.AddProperties(new ODataProperty
{
Name = property.Key,
Value = property.Value // for enum, complex type, should to create ODataEnumValue and ODataComplexValue.
});
}
});
}
我得到一个错误,说明名为“IntProp”多个属性中的条目或复数值进行检测。 在OData的,重复的属性名称是不允许的 。 另外,我怀疑,如果发送对象怎么样我现在做的是一个有效的方法,因为我来自一个源获取大量的对象之前创建一个动作每一个时间,我把它发送到服务器。 如果我为每个对象创建一个动作,然后为客户端的OData在内存中保存这些行动可能炸毁内存。 如何处理我的情况? 请帮帮我。
此外,还有一个问题,如果我评论的container.Customers.ToList()失败,说明我试图添加未声明的属性。 这是为什么 ?