对 MVC 来说非常新。我目前正在编写一个 API,并且有一个严格的格式,我需要返回 XML。
目前,我正在使用我的 EntityModel 来公开我的 SQL 存储过程。然后,我为 SP 创建了一个复杂类型。
我有一个调用 SP 的控制器,结果以 XML 格式返回。
这很好,但是当前的输出是(例如):
<product>
<productId>12345</productId>
<inStock>True</inStock>
<shelfLevel>10</shelfLevel>
<onOrder>0</onOrder>
<height>10</height>
<width>15</width>
<depth>12</depth>
<colour>green</colour>
</product>
但是,它需要构造为:
<product>
<productId>12345</productId>
<availability>
<inStock>True</inStock>
<shelfLevel>10</shelfLevel>
<onOrder>0</onOrder>
</availability>
<dimensions>
<height>10</height>
<width>15</width>
<depth>12</depth>
</dimensions>
<colour>green</colour>
</product>
使用我当前的 EntityModel 和 Complex Type 组合方法,我看不到任何包含“可用性”和“维度”包装元素的方式。
以下是控制器中用于现有输出的代码:
// GET api/product/5
//ProductAvailability_Result is the Complex Type derived from the SP output columns
public IEnumerable<ProductAvailability_Result> Get(int id)
{
myDB_DevEntities db = new myDB_DevEntities();
//ProductAvailability is a SP consisting of a simple 'select' statement that returns the resultset
var Result = db.ProductAvailability(id);
return Result.ToList();
}
任何人都可以就如何实现这一目标提供任何指示吗?我是否通过尝试使用上述方法以完全错误的方式来解决这个问题,即我应该放弃 EntityModel 吗?在我需要更改结构之前,它工作得很好。
任何建议将不胜感激。