“预测”下一个型号ID

时间:2012-08-29 22:42:39

标签: c# asp.net-mvc

...啧

我认为这可以做到,但我现在无法理解。

所以我创建了这个应用程序,运行正常。但由于某种原因(太长时间无法解释抱歉),我需要预测下一个ID来自数据表。

请注意,上一个ID + 1不起作用。我试过这个。

var lastProperty = db.Properties.OrderByDescending(p => p.PropertyID).FirstOrDefault();
int propID;
if (lastProperty == null)
{
    propID = 1;
}
    else
{
    propID = 1 + lastProperty.PropertyID;
}

只要属性不被删除就可以了...... 删除一个,当然会搞砸,因为我们可以删除6th Property, 最后一个将是5th现在,使用该代码我们将获得6 5(last one) + 1,并使用Property {{保存与PropertyID相关的模型我从那个代码得到的1}},而下一个6将是7,因为数据库仍然记得6存在并被删除...模型我打算与最后{{1}具有相同的Property没有它,它会失败......

此外,我无法在保存PropertyID之后添加此内容,我意识到这似乎是一种解决方案,但事实并非如此。必须预测。

谢谢...请帮忙......

更新

这是我想要完成的用例。

带有Property Property Property属性的

ID模型。 具有Name DataType List属性的ID模型。

创建新的ListValue时,PropertyID中的用户类型和Property的预制下拉列表会选择一个值,如果该值为Name,则会打开其他值包含列表框,文本框和按钮(DataType)的表单。用户在文本框中键入值,然后点击List将其添加到add_Button

列表框是从add_Button模型中填充的,而List会将值从文本框保存到List的{​​{1}}属性,正如您所见,我正在尝试通过预测值{...}来手动将add_Button添加到ListValue

然后,在完成通过文本框添加所需的所有元素后,点击List按钮,然后保存PropertyID

希望这很清楚。

3 个答案:

答案 0 :(得分:2)

您似乎想知道标识列的当前状态:

SELECT IDENT_CURRENT('Table')

答案 1 :(得分:1)

如果需要知道在提交到Db之前您的主键值是多少,您可以使用uniqueidentifier(GUID)作为Property的Pk,因此作为{{1}的Fk } 实体。通过这种方式,您可以创建自己的东西,并且它在提交时始终是唯一的。

答案 2 :(得分:0)

您提到实体框架,您是否尝试过调整模型?

可以调整

StoreGeneratedPattern以允许在存储到数据库时自动更新本地模型。