All*_*lan 5 c# odata win-universal-app
只是一个简单的问题,Win 8.1通用类库中不支持这个吗?或者如果它是,任何人都可以帮助我做错了什么.
http://jbsapplication.azurewebsites.net/Modules?$filter=Name%20eq%20'JBS%20Electronic%20forms'&$expand=Menus
Run Code Online (Sandbox Code Playgroud)
当我从浏览器或Fiddler执行此操作时,我收到正确的响应.
我在客户端视图模型类中的代码如下(使用OData Client v2代码生成的对象)
var application = new UriBuilder(ServiceBaseAddress);
var context = new Models.Application(application.Uri);
var modulesQuery = context.Modules.Expand(m=>m.Menus).Where(m => m.Name == ApplicationName);
var modules = await ((DataServiceQuery<Module>) modulesQuery).ExecuteAsync();
_currentModule = modules.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
在最后一行生成以下异常
Microsoft.OData.Core.DLL中出现"Microsoft.OData.Core.ODataException"类型的第一次机会异常
附加信息:当写一个JSON响应,用户模型必须被指定和设置实体和实体类型必须被传递到ODataMessageWriter.CreateODataEntryWriter方法或ODataFeedAndEntrySerializationInfo必须对正在writen的ODataEntry或ODataFeed来设置.
如果我删除了请求的Expand部分,一切都很好,但我需要再执行一次往返获取菜单.
Module类的减少参考:
[Key("Id")]
public class Module: BindableBase
{
public string Name
{
get { return _name; }
set { SetProperty(ref _name, value); }
}
DataServiceCollection<Menu> _menus = new DataServiceCollection<Menu>(null,TrackingMode.AutoChangeTracking);
public DataServiceCollection<Menu> Menus
{
get { return _menus; }
set
{
_menus = value;
OnPropertyChanged("Menus");
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
当我忘记将扩展实体作为EntitySet添加到ODataModelBuilder中时,我遇到了您描述的问题.在ASP.NET OData Web API中尝试此操作:
builder.EntitySet<Menus>("Menus");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |