У меня есть следующий код:Web API 2 OData EDM Anomaly
public class AwardTitle
{
public int AwardTitleId
{
get;
set;
}
public int? EpisodeId
{
get;
set;
}
public virtual AwardEpisode Episode
{
get;
set;
}
}
public class AwardEpisode
{
public int EpisodeId
{
get;
set;
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute("ODataRoute", "api", GetImplicitEDM());
}
}
private static Microsoft.Data.Edm.IEdmModel GetImplicitEDM()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<AwardTitle>("AwardTitles");
return builder.GetEdmModel();
}
Обратите внимание, как я только отображенный в AwardTitle
класс ... не AwardEpisode
класс.
Теперь, когда я перехожу к контроллеру, я бы ожидал получить сообщение об ошибке, не отображающей AwardEpisode
. Однако ошибок нет. Фактически, в дополнение к AwardTitle
, который извлекается ... AwardEpisode
также извлекается ... без каких-либо явных призывов сделать это.
Как это возможно ??? Должно ли это быть возможным?
Я использую ASP.Net Web API 2 на Windows 7.
небось генератор EDM использует отражение для создания всех зависимых классов. Возможно, есть параметр, чтобы сообщить генератору шаблонов игнорировать класс. –
Это по дизайну таким образом. – vittore
vitore, я не думаю, что это по дизайну. Каждый раз, когда я реализую контроллер, зависимые классы не включаются, если я специально не прошу их использовать $ expand – Chris