gpt4 book ai didi

c# - 可编辑复合主键

转载 作者:行者123 更新时间:2023-11-30 22:28:47 27 4
gpt4 key购买 nike

我有两个字段用作复合主键,它们不是自动生成的。现在在编辑 View 中,这两个字段是只读的,不能编辑它们。那么如何进行编辑...?

型号:

[Key][Column (Order=0)]
[Required]
public string LOV_COLUMN { get; set; }
[Key][Column(Order = 1)]
[Required]
public string LOV_CODE { get; set; }
[Required]
public string LOV_DESC{ get; set; }
public string COLUMN_TYPE { get; set; }
public string LOV_STATUS { get; set; }

Controller :

public ActionResult Edit(string LOV_COLUMN= "", string LOV_CODE="")
{
return View(dv.LOV.Find(LOV_COLUMN, LOV_CODE) ?? new ADM_LOV_Master());
}

[HttpPost]
public ActionResult Edit(ADM_LOV_Master entity, FormCollection form)
{
try
{
var model = dv.LOV.Find(entity.LOV_COLUMN, entity.LOV_CODE);
TryUpdateModel<ADM_LOV_Master>(model, form.ToValueProvider());
dv.Entry<ADM_LOV_Master>(model).State = System.Data.EntityState.Modified;
dv.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}

Edit View Code as:

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>LOV_Master</legend>

<table>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_COLUMN)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_COLUMN)
@Html.ValidationMessageFor(model => model.LOV_COLUMN)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_CODE)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_CODE)
@Html.ValidationMessageFor(model => model.LOV_CODE)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_DESC)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_DESC)
@Html.ValidationMessageFor(model => model.LOV_DESC)
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.COLUMN_TYPE)
</div>
<div class="editor-field">
@*@Html.EditorFor(model => model.COLUMN_TYPE)*@
@Html.RadioButtonFor(model => model.COLUMN_TYPE, "C", new { id = "COLUMN_TYPE_false"})
<label for="COLUMN_TYPE_true">Character</label>
@Html.RadioButtonFor(model => model.COLUMN_TYPE, "N", new { id = "COLUMN_TYPE_true"})
<label for="COLUMN_TYPE_true">Number</label>
@Html.ValidationMessageFor(model => model.COLUMN_TYPE)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_STATUS)
</div>
<div class="editor-field">
@*@Html.EditorFor(model => model.LOV_STATUS)*@
@Html.RadioButtonFor(model => model.LOV_STATUS, "Y", new { id = "LOV_STATUS_true"})
<label for="LOV_STATUS_true">Yes</label>
@Html.RadioButtonFor(model => model.LOV_STATUS, "N", new { id = "LOV_STATUS_false" })
<label for="LOV_STATUS_true">No</label>
@Html.ValidationMessageFor(model => model.LOV_STATUS)
</div>
</td>

</tr>

</table>

</fieldset>
}

最佳答案

主键应该是不可变的,我强烈建议使用 ID (int, GUID) 作为主键,然后将它们添加为仅具有唯一约束的代理键。我这样说是因为如果任何数据在任何其他表中引用此数据,您将违反约束,这对您来说将是一场噩梦。

关于c# - 可编辑复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10613296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com