2013-02-23 101 views
2

我使用实体框架,并呼吁为这里所描述的存储过程:http://msdn.microsoft.com/en-us/data/jj691402.aspx“访问多个结果集与代码”ObjectContext.Translate - 使用不同的属性名称

下执行我使用的ObjectContext的存储过程后。 Translate方法将我的结果导入数据合同对象,这要求数据合同属性匹配返回的数据。

有什么办法可以使用不同的属性名称,但仍然有翻译方法映射他们正确吗?

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

我试着给DataMember属性添加一个Name参数,但是没有奏效。

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

回答

1

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

我建议你调用具有直接映射到你正在调用的查询的属性的实体的翻译。然后,让您的DataMember定义它将被转换为序列化的名称。举例来说,如果您的查询返回listID和LISTNAME:

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

[DataMember("Name")] 
public string listName { get; set; } 
+0

我们共享客户端(前端)和业务/数据层之间的数据合同,因此,我们最后只是用存储过程返回的列名。 – AndrewR 2013-04-04 07:45:55

相关问题