3

我正在使用实体框架并调用此处描述的存储过程:http: //msdn.microsoft.com/en-us/data/jj691402.aspx在“使用代码访问多个结果集”下

执行存储过程后,我使用 ObjectContext.Translate 方法将结果放入数据协定对象中,这要求数据协定属性与返回的数据相匹配。

有什么方法可以使用不同的属性名称,但仍然让 Translate 方法正确映射它们?

例如,我有一个获取国家列表的过程,它返回以下列:listID、listName。我希望我的数据合同对象只有 ID 和名称,而不是这些名称。

我尝试将 Name 参数添加到 DataMember 属性,但这不起作用。

[DataMember(Name="listID")]
public string ID { get; set;}
4

1 回答 1

1

不,你不能这样做。Translate 遍历读取器内部的数据集,并将其直接映射到您传入的实体中定义的属性。它不知道数据成员注释。这是有道理的,因为数据注释用于序列化,您的数据层不需要知道这些。

我建议您在具有直接映射到您正在调用的查询的属性的实体上调用 Translate。然后,让您的 DataMember 定义它将被转换为以进行序列化的名称。例如,如果您的查询返回 listID 和 listName:

[DataMember("ID")]
public string listID { get; set; }

[DataMember("Name")]
public string listName { get; set; }
于 2013-04-03T14:15:44.483 回答