Web Api返回Json - [System.NotSupportedException]不支持指定的方法。 (Sybase Ase)

时间:2015-05-15 09:13:31

标签: sybase-ase eager-loading entity-framework-4.2

我正在使用带有Entity Framework 4.2的Web api和Sybase Ase连接器。

在我尝试添加新表之前,没有问题返回JSon。

  return db.car
             .Include("tires")
             .Include("tires.hub_caps")
             .Include("tires.hub_caps.colors")
             .Include("tires.hub_caps.sizes")
             .Include("tires.hub_caps.sizes.units")
             .Where(c => c.tires == 13);

如果删除以下行,上述工作没有问题:

.Include("tires.hub_caps.colors")

但是,当包含该行时,我会收到错误:

""准备命令定义时发生错误。有关详细信息,请参阅内部异常。"

内部异常如下: " InnerException = {"不支持指定的方法。"}" " source = Sybase.AdoNet4.AseClient"

以下内容也会导致错误:

  List<car> cars = db.car.AsNoTracking()
             .Include("tires")
             .Include("tires.hub_caps")
             .Include("tires.hub_caps.colors")
             .Include("tires.hub_caps.sizes")
             .Include("tires.hub_caps.sizes.units")
             .Where(c => c.tires == 13).ToList();

错误如下:

An exception of type 'System.Data.EntityCommandCompilationException' occurred in System.Data.Entity.dll but was not handled in user code

Additional information: An error occurred while preparing the command definition. See the inner exception for details.

内部异常:"Specified method is not supported."

这表明Sybase Ase Data Connector出现故障。

我在所有表上使用数据注释来控制返回哪些字段。在colors表上,我尝试了以下注释来限制只返回键的属性:

[JsonIgnore]
 [IgnoreDataMember]

任何可能导致此问题的想法?

或者,如果我保留颜色并删除,

 .Include("tires.hub_caps.sizes")
 .Include("tires.hub_caps.sizes.units")

然后这也有效。当一个include语句从一个对象向两个方向分叉时,似乎Sybase Ase连接器不支持这种情况。这有什么方法吗? Sybase Ase和进度数据连接器也会出现同样的问题。

在标准ASP.net MVC控制器类中不会出现此问题 - 问题在于将单个表上的两个一对多关系序列化为JSON。

如果启用了延迟加载,则仍会出现此问题。

在我看来,这是Sybase ASE的一个错误,没有一个连接器能够解决。

0 个答案:

没有答案