我已经实现了一个 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)]