0

私は EF、C#、MVC を同時に学ぼうとしているので、これが少し基本的なことでしたら申し訳ありません。

SQL Server ストアド プロシージャからモデルに結果セットを取得しようとしています。

EDMX ファイルを作成し、ストアド プロシージャをインポートしました。結果セットは cs ファイルに存在します。以下を参照してください。

public partial class prBGGetYourTasks_Result
{
    public int CompanyTaskID { get; set; }
    public int TaskID { get; set; }
    public string TaskName { get; set; }
    public string TaskDescription { get; set; }
    public System.DateTime StartDate { get; set; }
    public System.DateTime EndDate { get; set; }
    public string TimeLeft { get; set; }
    public string Status { get; set; }
}

次に、Task という名前の正確な定義を使用して、models フォルダーにクラスを作成しました。

次のコードを使用して、SP の結果をモデルに入力しようとしています。

public class TaskList : List<Task> {
    public TaskList GetTasks()
        {
            BGEntities BGDB = new BGEntities();
            TaskList task_list = new TaskList();
            task_list = BGDB.prBGGetYourTasks(HttpContext.Current.User.Identity.Name).ToList();
            return task_list;
    }
}

ただし、「タイプ「Genric.List」を「Task.TaskList」に暗黙的に変換することはできません。結果タイプの変数を試し、結果セットタイプにキャストしようとしました。

私も間違った方法で行っている場合は、アドバイスしてください。

私は以前、SQL リーダーとループを使用してモデルにデータを入力しましたが、もっと良い方法が必要だと思います。

4

2 に答える 2

0

私の推測では、データ モデル内の関数のインポートは、必要なエンティティ タイプではなく、ComplexTypes のコレクションを返すように設定されています。

修正します。[データ モデル] -> [関数のインポート] で関数 (ストアド プロシージャ) をダブルクリックします。ダイアログ ボックス内に、"Returns a collection of" というタイトルのセクションがあります。ドロップダウン エンティティ: からエンティティ タイプを選択します。[OK] をクリックします。これもしばらくイライラしました。

うまくいけば、これは誰かが答えを探しているのに役立ちます. 元の投稿が彼らにとってうまくいく回避策を見つけたことを本当に願っています!

于 2014-01-07T22:17:19.977 に答える
0

あなたの問題はここにあります:

TaskList task_list = new TaskList();
task_list = BGDB.prBGGetYourTasks(HttpContext.Current.User.Identity.Name).ToList

List<Task>aを aに割り当てようとしていTaskListます。継承はこのようには機能しません。

List<Task> tasks = new List<Task>();
TaskList taskList = new TaskList();

//This will compile
tasks = taskList;

//This will not
taskList = tasks;

TaskList完全に削除して だけを使用したい場合がありList<Task>ますが、動作の新しいメンバーを追加しているようには見えません。

于 2013-09-12T03:03:59.620 に答える