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 は、単純に data 変数を持つ関数であり、コンソールにデータを記録するだけです。
私の 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 クラスを作成しましたが、これは非常に単純で、いくつかのプロパティがあり、他のメソッドはありません)。
コードファーストEntity Framework用に作成したエンティティを返すと、問題が発生します。機能しません。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)]