0

嘘...

我认为这可以做到,但我现在无法弄清楚。

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

请注意,最后一个 id + 1 将不起作用。我试过这个。

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

只要属性不被删除,它就可以工作......一旦删除,它当然会搞砸,因为假设我们 delete 6th Property,最后一个将是5th现在,并且使用该代码我们将得到6 5(last one) + 1,并且我保存了PropertyPropertyID 6我从该代码中获得的模型相关的模型,下一个将Property是 7,因为数据库仍然记得 6 存在并已被删除...失败...PropertyIDProperty

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

谢谢...请帮忙...

更新

这是我要完成的用例。

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

当在Property中创建新用户类型Name,并从预制下拉列表中DataType选择一个值,如果该值是List,它会打开包含列表框、文本框和按钮 ( add_Button) 的附加表单。用户在文本框中输入值,然后单击 将add_Button其添加到List

List列表框是从模型填充的,并且add_Button,将文本框中的值保存到的ListValue属性中List,正如您所见,我试图通过预测它的值来手动PropertyID添加List...

然后,在完成通过文本框添加所有想要的元素后,通过单击Create按钮,Property然后保存。

希望这已经足够清楚了。

4

3 回答 3

2

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

SELECT IDENT_CURRENT('Table')
于 2012-08-29T22:44:08.673 回答
1

当需要在提交到 Db 之前知道您的主键值将是什么时,您可以使用唯一标识符 (GUID) 作为您的 Pk Property,因此作为您的List实体的 Fk。这样你就可以自己创造它,而且它在承诺上总是独一无二的。

于 2012-08-31T06:54:00.407 回答
0

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

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

于 2012-08-29T23:04:28.787 回答