免責事項;私はmvc nubです。 私はちょっと立ち往生しました。これは数日前と同じように機能しましたが、なぜそれが今ではないのか分かりません。問題は、サブクラスのデータを元に戻すことができず、「通常の」プロパティからのデータだけです。私はGlobal.asax内から5行を移入しており、テーブルReDayModelsはDB内にあります。キーはDBでもOKです。asp.net mvcはサブクラスから値を取得しなくなりました
編集:ReWeekModelとReDayModelの両方のテーブルにデータがあります。私はコードの最初のアプローチを使用しています。
私はこのDB持っている:
public class ReChronoDB : DbContext
{
public DbSet<ReWeekRowModel> WeekRows { get; set; }
}
を、これは私のDbSet行
public class ReWeekRowModel
{
public ReWeekRowModel()
{
CreatedDate = DateTime.Now;
Days = new List<ReDayModel>()
{
new ReDayModel {DayName = DayOfWeek.Monday},
new ReDayModel {DayName = DayOfWeek.Tuesday},
new ReDayModel {DayName = DayOfWeek.Wednesday},
new ReDayModel {DayName = DayOfWeek.Thursday},
new ReDayModel {DayName = DayOfWeek.Friday},
new ReDayModel {DayName = DayOfWeek.Saturday},
new ReDayModel {DayName = DayOfWeek.Sunday}
};
}
public DateTime CreatedDate { get; private set; }
[Key]
public int Id { get; set; }
public string Name { get; set; }
[DisplayName("Week #"), Range(1, 53)]
public int WeekOfYear { get; set; }
[Range(2017,2075)]
public int Year { get; set; }
public List<ReDayModel> Days { get; set; }
public Priority Priority { get; set; }
public Status Status { get; set; }
public Category Category { get; set; }
public Responsible Responsible { get; set; }
public ResponseGroup ResponseGroup { get; set; }
public string CaseRef { get; set; }
[StringLength(75), DisplayName("Short Description")]
public string Description { get; set; }
public string Details { get; set; }
}
そしてここサブクラスです:
public class ReDayModel
{
[Key]
public int Id { get; set; }
public DayOfWeek DayName { get; set; }
public double Hours { get; set; }
public string Comments { get; set; }
}
そして最後に、ここでのコントローラがありますインデックスアクション。
public class ReChronoController : Controller
{
ReChronoDB _reChronoDb = new ReChronoDB();
// GET: ReChrono
public ActionResult Index(string responsegroup = "", string responsible = "", int week = 0, int year = 0)
{
CultureInfo ciCurr = CultureInfo.CurrentCulture;
ViewBag.CurrentWeek = ciCurr.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek,
DayOfWeek.Monday);
ViewBag.CurrentYear = ciCurr.Calendar.GetYear(DateTime.Today);
var model = _reChronoDb.WeekRows.ToList();
// For dropdownlists
ViewBag.Years = _reChronoDb.WeekRows.Select(r => r.Year).Distinct();
ViewBag.Weeks = _reChronoDb.WeekRows.Select(r => r.WeekOfYear).Distinct();
var filteredmodel = ReChronoDomainLayer.FilteredWeekRows(model, responsegroup, responsible, week, year);
return View(filteredmodel);
}
}
「モデル」変数にマウスを置いてドリルダウンすると、行のDaysコレクションに値がありません。
編集:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[CreatedDate] AS [CreatedDate],
[Extent1].[Name] AS [Name],
[Extent1].[WeekOfYear] AS [WeekOfYear],
[Extent1].[Year] AS [Year],
[Extent1].[Priority] AS [Priority],
[Extent1].[Status] AS [Status],
[Extent1].[Category] AS [Category],
[Extent1].[Responsible] AS [Responsible],
[Extent1].[ResponseGroup] AS [ResponseGroup],
[Extent1].[CaseRef] AS [CaseRef],
[Extent1].[Description] AS [Description],
[Extent1].[Details] AS [Details]
FROM [dbo].[ReWeekRowModels] AS [Extent1]
編集:ここで実行されているSQLがあり、これは文脈のですか?
public class ReChronoDBInitializer :
DropCreateDatabaseIfModelChanges<ReChronoDB>
{
protected override void Seed(ReChronoDB context)
{
base.Seed(context);
var enumToLookup = new EnumToLookup();
enumToLookup.Apply(context);
ReChronoDomainLayer.CreateDummyEntries(context);
}
}
List Daysコレクションを完全に無視しているようです。
フィルタリングされたモデルを使用せずに試してみましたが、ここに残しました。そのため、アクションにパラメータがある理由を理解できます。
アイデア?
どのようなEFにアプローチしていますか? DdContextも追加します。 ReDayModelテーブルにデータがありますか? –
@M.Wiśnickicode first。 dbcontextを追加するとどういう意味ですか?ReWeekModelとReDayModelの両方のテーブルにデータがあります。 –
'ReWeekRowModel'と' ReDayModel'の間に '1 *'(1対多)の関係があるようです。テーブルの外来キーは何ですか?このリンクをチェックしてください。 。私はあなたが 'public listに' virtual'キーワードを持っていないのでそれが疑わしいです。 Days {get;セット; } ' –
coolboyjules