私は EF6 アルファを使用しており、新しい機能を使用してストアド プロシージャにマップしています。単体テストで、「プロシージャまたは関数 CreateDayDetail に指定された引数が多すぎます」というエラーが表示されます。
SQL プロファイラーには、次の proc 呼び出しが表示されます。
exec [Schedule].[CreateDayDetail] @startTime=0,@duration=1,@durationEst=0,@isPaid=1,@requirePunch=0,@dayKey=16,@activityTypeKey=1,@TemplateDay_Key=NULL
問題は、自動生成される @TemplateDay_Key パラメータです。しかし、ActivityType 用に作成されていないのに、なぜ作成されているのかわかりません。
エンティティクラスは次のとおりです。
public class DayDetail
{
[Key]
public int Key { get; set; }
[Required]
public TemplateDay Day { get; set; }
[Required]
public ActivityType Activity { get; set; }
[Range(TimeMinimum, TimeMaximum)]
public int StartTime { get; set; }
[Range(DurationMinimum, DurationMaximum)]
public int Duration { get; set; }
public bool DurationEstimated { get; set; }
public bool IsPaid { get; set; }
public bool RequirePunch { get; set; }
[Timestamp]
public byte[] Version { get; set; }
}
モデルの構成に使用している流暢な API は次のとおりです。
typeConfig.ToTable("Schedule.DayDetail");
typeConfig.Property(d => d.Key)
.HasColumnName("DayDetailKey");
typeConfig.HasRequired(d => d.Day)
.WithMany()
.Map(d => d.MapKey("TemplateDayKey"));
typeConfig.HasRequired(d => d.Activity)
.WithMany()
.Map(d => d.MapKey("ActivityTypeKey"));
typeConfig.MapToStoredProcedures(sp =>
sp.Insert(i => i.HasName("Schedule.CreateDayDetail")
.Parameter(d => d.Day.Key, "dayKey")
.Parameter(d => d.Activity.Key, "activityTypeKey")
.Parameter(d => d.StartTime, "startTime")
.Parameter(d => d.Duration, "duration")
.Parameter(d => d.DurationEstimated, "durationEst")
.Parameter(d => d.IsPaid, "isPaid")
.Parameter(d => d.RequirePunch, "requirePunch"))
.Update(u => u.HasName("Schedule.UpdateDayDetail")
.Parameter(d => d.Key, "key")
.Parameter(d => d.Day.Key, "dayKey")
.Parameter(d => d.Activity.Key, "activityTypeKey")
.Parameter(d => d.StartTime, "startTime")
.Parameter(d => d.Duration, "duration")
.Parameter(d => d.DurationEstimated, "durationEst")
.Parameter(d => d.IsPaid, "isPaid")
.Parameter(d => d.RequirePunch, "requirePunch")
.Parameter(d => d.Version, "version"))
.Delete(x => x.HasName("Schedule.DeleteDayDetail")
.Parameter(d => d.Key, "key")
.Parameter(d => d.Day.Key, "dayKey")
.Parameter(d => d.Activity.Key, "activityTypeKey")
.Parameter(d => d.Version, "version")));
私は今日、あまりにも長い間これを見てきました。助けていただければ幸いです.......