0
我需要将整数列表传递给存储过程,因为实体框架需要很长的时间来处理请求。我正在使用用户定义表类型来执行此操作。我正在使用EntityFrameworkExtras.EF6,并创建了一个存储过程和Table Type类来帮助解决这个问题。下面是这些类:动态使用对象初始化器
namespace MyModel{
using EntityFrameworkExtras.EF6;
[UserDefinedTableType("SelectedActivity")]
public class ChartCountryUDT
{
[UserDefinedTableTypeColumn(1)]
public int ID { get; set; }
}
[StoredProcedure("GetCountryChartData")]
public class ChartCountryStoredProcedure
{
[StoredProcedureParameter(System.Data.SqlDbType.Udt, ParameterName = "ActivityIDs")]
public List<ChartCountryUDT> ChartCountryUDT { get; set; }
}}
,这里是我的方法调用存储过程传入表型和返回我的对象的列表:
public List<ChartCountry> GetCountriesForChart(List<int> activityIDs)
{
using (MyEntities ctx = new MyEntities())
{
var procedure = new ChartCountryStoredProcedure()
{
ChartCountryUDT = new List<ChartCountryUDT>()
{
new ChartCountryUDT() {ID = 1 }
}
};
return (List<ChartCountry>)ctx.Database.ExecuteStoredProcedure<ChartCountry>(procedure);
}
}
正如你可以在我的ChartCountryUDT对象看初始值设定项,我通过将ID值设置为1来硬编码一个对象。此工作正常,但我想采用传入的activityIDs参数并在对象初始值设定项中为activityIDs参数中的每个ID创建新对象。是否有任何方法循环播放我的activityIDs列表并在每个记录的对象初始值设定项中创建新对象? 感谢
这正是我需要的@IvanStoev。非常感谢你! – devguy