我有一个包含作业许可证信息的表,只有许可证ID,许可证名称。例如Id1 - 许可证1,Id2 - 许可证2等
现在,我有一个名为Jobs的表,其中包含作业信息,其中包含许可证1和许可证2的日期和许可证号,例如
JobId
,JobName
,JobType
,License1Date
,License1No
,License2Date
,License2No
等。
我有第三个屏幕,我用它来跟进License1
和License2
。当我收到License1
时,我更新了乔布斯表中的License1
信息以及License2
的信息。
目前,我正在使用手动方式更新Jobs表。以下是我的代码:
public ActionResult Received(int LicenseId, string Date, string License)
{
// LicenseId is the Primary Key in License Tables.
if (LicenseId == 1)
{
// Update License 1 Information of Jobs Table
}
else if(LicenseId == 2)
{
// Update License 2 Information of Jobs Table
}
}
这个工作正常。但问题是LicenseId是License表的关键。如果用户认为Id1
是License2
而Id2
是License1
那么这将是一个问题。
在这种情况下,如果用户收到许可证2,它将更新Jobs表的许可证1信息,因为手动配置了Id 1表示更新作业表的许可证1信息。我怎样才能让它变得动态?
更新:让我更改方案以简化。我有一个表保存许可证和第二个表保存作业和第三个表是保存许可证ID和作业ID的桥梁。现在,我有详细信息屏幕,有3个标签。如果许可证是许可证1,我想填写第一个标签,如果是许可证2,我想填写第二个标签。如果是许可证3,我想填写第三个。在许可证表格中,许可证1可以是1,2或3.我不能说如果Id是1则填写第一个标签。我知道我应该循环。假设,我不想那么我怎么能实现它。
也许它会有用吗?您还可以将currentLicense与“否”和“日期”等连接起来。
public ActionResult Received(int LicenseId, string Date, string License)
{
string currentLicense = string.Concat("License", LicenseId);
//update for currentLicense
}
在你的表结构中,Jobs
有licenseIds
的直接字段。所以将来当你有新的licenseId
然后你需要改变Jobs
表为licenseId
添加更多字段
而你的问题,表明一个job
可以有多个licenseId
如果可能更改表结构,我建议Jobs
表应该是单独的表,你需要有License
和Job
的联结表。
例
乔布斯表专栏qazxsw poi,qazxsw poi,qazxsw poi ......
LicenseJobs(联结表)列
Id
,JobName
,JobType
这样您就不必担心licenseId,只需为licenseId和JobId调用数据库更新。
在此之后,您还需要将JobId传递给数据库,因此需要修改Action
JobId
编辑 - -
在新方案中,它显示您的UI逻辑依赖于文本“License1”或“License2”。因此Id和Text必须在许可证表中是唯一的。因此,您需要在代码中使用LicenseId
或LicenseDate
,这些内容与public ActionResult Received(int jobId, int LicenseId, string Date, string License)
{
}
表中的Enum
相同。那么你总是可以首先查询string
表以获得许可证的ID,然后根据LicenseName
获取/更新其他详细信息。