web-dev-qa-db-ja.com

.netコアで複数の結果セットを操作する

ストアドプロシージャを使用して結果を取得しているときに、.netコアのビューモデルで複数の結果セットを取得して格納するにはどうすればよいですか

たとえばストアドプロシージャから2つ以下のクエリのレコードを返しています

Select * LMS_Survey
Select * from LMS_SurveyQuestion
Select * from LMS_SurveyQuestionOptionChoice

以下は2つのテーブルのビューモデルです

public class LMS_SurveyTraineeViewModel
{
    public LMS_SurveyDetailsViewModel SurveyDetailsViewModel { get; set; }
    public LMS_SurveyQuestionsViewModel SurveyQuestionsViewModel { get; set; }
    public LMS_SurveyQuestionOptionChoiceViewModel SurveyQuestionOptionChoiceViewModel { get; set; }
}

これは私がストアドプロシージャを実行している方法です

public List<LMS_SurveyTraineeViewModel> GetTraineeSurvey(int surveyID)
        {
            try
            {
                List<LMS_SurveyTraineeViewModel> modelList = new List<LMS_SurveyTraineeViewModel>();

                modelList = dbcontext.Set<LMS_SurveyTraineeViewModel>().FromSql("LMSSP_GetTraineeSurvey @surveyID = {0},@LanguageID = {1}", surveyID, AppTenant.SelectedLanguageID).ToList();

                return modelList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

ビューモデルのストアドプロシージャを使用して、複数の結果セットをどのように格納できますか?

10
XamDev

現在、EF Coreはこれをサポートしていません。これに対処するための未解決の問題があります。

https://github.com/aspnet/EntityFramework/issues/8127

2018年9月12日更新:これは、リリース3.0であっても、EF Coreの優先事項ではありません。複数の結果シナリオがある場合は、DapperまたはプレーンADO.NETを使用するのが最適です。

10
Ricky G

あなたはこれを使うことができます:

using (SqlCommand cmd = new SqlCommand("sp_db",
            new SqlConnection("your_db_connection")))
        {
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@param", SqlDbType.VarChar).Value = param;

            cmd.Connection.Open();
            cmd.ExecuteNonQuery();

            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    string a = (string)reader["ATTRIBUTE_A"];
                    string b = (string)reader["ATTRIBUTE_B"];
                }
            }
        }

SPで属性の出力パラメーターを設定していませんが、SqlCommandを使用して抽出できます。

お役に立てれば。

1
Alan Uscanga

現在、EF Coreはこれをサポートしていません。複数の結果セットを取得するには、この例を参照してください。 https://github.com/nilendrat/EfCoreMultipleResults/

0