ストアドプロシージャを使用して結果を取得しているときに、.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;
}
}
ビューモデルのストアドプロシージャを使用して、複数の結果セットをどのように格納できますか?
現在、EF Coreはこれをサポートしていません。これに対処するための未解決の問題があります。
https://github.com/aspnet/EntityFramework/issues/8127
2018年9月12日更新:これは、リリース3.0であっても、EF Coreの優先事項ではありません。複数の結果シナリオがある場合は、DapperまたはプレーンADO.NETを使用するのが最適です。
あなたはこれを使うことができます:
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を使用して抽出できます。
お役に立てれば。
現在、EF Coreはこれをサポートしていません。複数の結果セットを取得するには、この例を参照してください。 https://github.com/nilendrat/EfCoreMultipleResults/