【发布时间】:2012-10-08 13:46:19
【问题描述】:
我已经实现了一个 Web 服务,我通过 ajax 调用它。
注意:我的实体是为实体框架代码第一目的而制作的。
我的 ajax 如下所示:
$.ajax({
type: "GET",
url: "/MyProject/MyService.svc/GetEntity",
data: "entityID=1",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: AjaxSucceeded,
error: function (msg, status, extra) {
alert(status + " - " + extra);
}
});
AjaxSucceeded 只是一个带有数据变量的函数,我只是在控制台中记录数据。
我的 GetEntity 函数目前如下所示:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public MyEntity GetEntity(int entityID)
{
AccessObject accessObject = new AccessObject("MyConnectionString");
MyEntity theEntity = accessObject.GetByID(entityID);
return theEntity;
}
我已经用一个专门为测试而创建的类对此进行了测试,它按预期工作(例如,我在 Web 服务中创建了一个 MyEntity 类,它非常简单,有几个属性,没有其他方法等)。
当我返回一个我为代码优先实体框架创建的实体时,问题就出现了。它不起作用,多次调用 Web 服务函数,然后控制台中出现错误,指出“加载资源失败”,指的是我的服务函数。
作为参考,这是我的实体:
[DataContract(IsReference=true)]
public class MyEntity
{
#region Properties
[Key]
[DataMember]
public int ID { get; set; }
public bool SomeBoolean { get; set; }
[StringLength(1000)]
public string Description { get; set;}
#endregion
#region Relationships
public virtual SomeOtherEntity OtherEntity { get; set; }
#endregion
}
我只设置了 ID 为 DataMember 进行测试,但仍然没有成功。
谁能指出我正确的方向?我知道 Web 服务可以工作,因为其他功能也可以工作,如果我设置了一个本地(在 Web 服务内)类,它会毫无问题地返回它。所以我假设它与实体框架属性有关?我可能错了,但这是我能想象的。
感谢您的宝贵时间。
哦,另外,作为参考,我的服务类具有以下属性:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
【问题讨论】:
-
我尽量不在论文中提出这个问题。很抱歉它的长度。
-
您的 wcf 服务是“启用 ajax 的 wcf 服务”吗?
标签: c# .net ajax web-services entity-framework