0

我正在尝试使用 ASP.NET Web API 和实体框架在 C# 中编写我的第一个 RESTful API。

我的问题是从我的 EF 查询返回的列表被无用的实体键信息污染(我发现这是因为我的列如果认为它们都必须是键则可以为空)。

这是我从 API 调用中收到的 XML 响应的一部分

<syemploy z:Id="i1"><EntityKey z:Id="i2">
<d2p1:EntityContainerName>AbraHRMS_LiveEntities</d2p1:EntityContainerName>
<d2p1:EntityKeyValues>
    <d2p1:EntityKeyMember>
       <d2p1:Key>id_col</d2p1:Key>
       <d2p1:Value i:type="d5p1:int">15</d2p1:Value>
    </d2p1:EntityKeyMember>
    <d2p1:EntityKeyMember>
       <d2p1:Key>e_address1</d2p1:Key>
       <d2p1:Value i:type="d5p1:string">153 Townsend Street, Suite 9057</d2p1:Value>
    </d2p1:EntityKeyMember>
...

如何从响应中删除实体键值?我的 c# 代码如下所示

 AbraHRMS_LiveEntities _db = new AbraHRMS_LiveEntities();

 # GET api/employee
 public List<MvcApplication1.DAL.syemploy> Get()
 {
    return _db.syemploys.ToList();
 }

同样,这是我在 C# 中的第一个 API,所以如果有什么看起来很时髦,请随时指出。

4

1 回答 1

0

默认情况下,您将拥有 XML 中实体的所有公共属性。为避免让它们响应,请尝试创建不包含不需要的字段的“新”类,然后将结果转换为“新”类型对象的列表。为此,您可以在 _db.syemployes 上使用 .Select() 或 .Cast() 。请记住,如果您想调用 Cast<> 方法,syemploy 类应该可以转换为“新”类。您可以在此处阅读有关 C# 中的类型转换的信息。如果你使用 .Select() 然后在 select 的 lambda 表达式中构造新类型的对象。

于 2012-08-01T00:52:25.067 回答