我有一个基本模型,它有几种不同形式的常见属性。
public class BaseForm
{
public int Id { get; set; }
public int SubId { get; set; }
...several more common properties...
}
然后,我为各个表格提供了更具体的模型。
public class InfoForm : BaseForm
{
public string Information { get; set; }
public string Commands { get; set; }
}
public class WhatForm: BaseForm
{
public string WhatHappens { get; set; }
public string Behavior { get; set; }
}
现在更新这些模型时,一切都很有效,因为BaseForm.Id和BaseForm.SubId由现有记录填充。
创建新记录时,我缺乏知识。 BaseForm.Id和BaseForm.SubId是可预测的,但每种表单都不同。
对于InfoForm,他们将是
Record one..
BaseForm.Id = 1
BaseForm.SubId = 1
Record two..
BaseForm.Id = 2
BaseForm.SubId = 1
Record three..
BaseForm.Id = 3
BaseForm.SubId = 1
//Since Id is auto increment I assume it can be left blank for db
和WhatForm他们将
Record one..
BaseForm.Id = 1
BaseForm.SubId = 2
Record two..
BaseForm.Id = 2
BaseForm.SubId = 2
Record three..
BaseForm.Id = 3
BaseForm.SubId = 2
//Since Id is auto increment I assume it can be left blank for db
我的目标是只有一个控制器动作,每个表单指向它,但如果我必须有一个不同的控制器动作来设置id和subid的特定值,那么就这样吧。
所以我的问题是有预先填充这些值的方法,还是我必须在控制器操作中执行此操作?
答案 0 :(得分:1)
只需使用子类的构造函数:
public class InfoForm : BaseForm
{
public InfoForm()
{
SubId = 1;
}
...
}
而且,是的,你不应该混淆Id
。保存后,实体框架将使用数据库中的自动ID对其进行回填。