c#
  • visual-studio
  • linq-to-sql
  • 2010-11-23 12 views 0 likes 
    0

    SQLクエリでテーブルをクエリしています(テーブルが動的に決定されています)。すべてのテーブルはITableIsFileインターフェイスを実装しています。ここに問題のあるコードがあります。最後の行でインターフェイスをタイプとして使用中にエラーが発生しました

      string sql = "Select * from " + file + " where userID = '" + currAgentTM.systemuserid.Value 
          + "' and CallStatusID = null"; 
         var records = appelsDataContext.ExecuteQuery<ITableIsFile>(sql); 
    

    、私は次のエラーを取得する:型「MRS_Admin.ITableIsFileは、」マッピングの中に構築するために、デフォルト(パラメータなし)建設業者を宣言しなければなりません。

    私が知っている(テストした)ところで、インターフェイスにコンストラクタを実装することはできません。

    ご協力いただきありがとうございます。非常に高く評価されています。 Mathieu

    +0

    備考セクションの要件に注意してください、私はあなたのインタフェースを実装する具象クラスを提供する必要があるかもしれないと考え、あなたのインターフェースは直接ではありません。 – asawyer

    +0

    しかし、私はどのテーブルが照会されるのかわかりません。または、私はクエリに最も良い方法を使用していないでしょうか? – Mathieu

    +0

    文字列sql文を使用して設定した場合は、linqコンテキストを削除し、返された生データセットをオブジェクトに直接マップします。 – asawyer

    答えて

    2

    AS-CIIは、インターフェイスから基本クラスを作成し、その型を使用する必要があると思います。たとえば、代わりの:

    interface ISomething { } 
    
    class SomethingOne : ISomething { } 
    
    class SomethingTwo : ISomething { } 
    

    試してみてください。

    interface ISomething { } 
    
    class SomethingBase : ISomething { } 
    
    class SomethingOne : SomethingBase { } 
    
    class SomethingTwo : SomethingBase { } 
    

    しかし、ここでhttp://msdn.microsoft.com/en-us/library/bb361109.aspx

    +0

    これは、不幸にもまったく同じエラーを返します。 – Mathieu

    +0

    ああ、私はあなたが意味するものを得ます。申し訳ありませんが、私は注意深く読まなかった。私は再テストしており、うまくいくようです。 Thanx – Mathieu

    1

    パラメータのないコンストラクタを使用してインターフェイスの実装を使用する必要があります。

    +0

    インターフェイスにコンストラクタを追加すると、次のようになります。インターフェイスにコンストラクタを含めることはできません – Mathieu

    +0

    実際には、インターフェイスにコンストラクタを配置する必要はありません。具体的なクラスにインターフェイスを実装する必要があります。 –

    2

    http://msdn.microsoft.com/en-us/library/bb361109.aspx

    TResultは、データコンテキストがに設定され、リターンをマッピングするcabableであることを具体的なクラスでなければなりません。

     関連する問題

    • 関連する問題はありません^_^