1

モデルにEntityFramework(edmxファイル)を使用し、WCFを使用してモデルにアクセスしています。エンティティデータモデル(テーブルオブジェクトの例)のリストを返そうとすると、エラーが発生します:

サーバーは意味のある応答を提供しませんでした。これは、コントラクトの不一致、セッションの早期シャットダウン、または内部サーバーエラーが原因である可能性があります。

これが私のWCFコードです。IService.cs:

[ServiceContract(CallbackContract = typeof(IPesananCallBack), SessionMode = SessionMode.Required)]
public interface IPelayanWebService
{
   [OperationContract]
   List<table> GetAllTables();
}

Service.cs:

public List<table> GetAllTables()
{
    TableModel model = new TableModel();
    return model.GetAllTables();
}

モデルの私のコード:

public List<table> GetAllTables()
{
    using (restoicdbEntities ent = new restoicdbEntities())
    {
        return ent.table.ToList();
    }
}

クライアントでその関数を呼び出すだけで、エラーが発生しました。独自のデータ契約を作成する必要がありますか?edmxからデータコントラクトを生成する方法はありますか?

更新: これは、EntityFrameworkから生成されたコードです。

[EdmEntityTypeAttribute(NamespaceName="restoicdbModel", Name="table")]
[Serializable]
[DataContractAttribute(IsReference=true)]
public partial class table: EntityObject
{
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.Int32 ID_TABLE
    {
        get
        {
            return _ID_TABLE;
        }
        set
        {
            if (_ID_TABLE != value)
            {
                OnID_TABLEChanging(value);
                ReportPropertyChanging("ID_TABLE");
                ID_TABLE = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ID_TABLE");
                OnID_TABLEChanged();
            }
        }
    }
    private global::System.Int32 ID_TABLE;
    partial void OnID_TABLEChanging(global::System.Int32 value);
    partial void OnID_TABLEChanged();
}
4

1 に答える 1

0

Steve Wilkes、 WCF、Entity Framework&Data Contractsが提供するリンクを読んだ後、Webサービスからエンティティオブジェクトを渡すのは適切ではないようです。したがって、エンティティオブジェクトからのマッピングである独自のデータ転送オブジェクトを作成し、それをWebサービスから渡す必要があります。

于 2012-12-08T14:28:17.160 に答える