1

我正在使用带有 ADO.NET 实体数据模型的 Oracle 11g 数据库。我时不时地遇到这个错误,我不知道是什么原因造成的。我假设它在 EDMX 文件或设计器文件中,但我似乎无法弄清楚。我已经多次删除模型、添加模型、更新模型等,但无法找出问题所在。它适用于其他页面,但这似乎是一个问题。

这种情况以前发生过,但只需删除并重新添加表格即可。有想法该怎么解决这个吗?

            using (ODSData.Entities entities = new Entities())
        {
            var info = from item in entities.ODS_VALIDATIONRULE
                       select item;

            newPK = Convert.ToInt32(info.Max(p => p.VALIDATIONRULEID)) + 1;

            try
            {
                ODS_VALIDATIONRULE newRule = new ODS_VALIDATIONRULE();

                newRule.ALLOWNULLIND = isNull;
                newRule.CREATEDATE = DateTime.Now;
                newRule.FAILIND = isFail;
                newRule.MAXVALUEFACTOR = max;
                newRule.MINVALUEFACTOR = min;
                newRule.RULEDESCRIPTION = description;
                newRule.SOURCESYSTEM = source;
                newRule.TABLENAME = table;
                newRule.COLUMNNAME = column;
                newRule.DATATYPE = datatype;
                newRule.VALIDVALUELIST = valid;
                newRule.VALIDATIONRULEID = newPK;
                entities.AddToODS_VALIDATIONRULE(newRule);
                entities.SaveChanges();
                insertAccepted = true;

            }
            catch
            {
                // Log Error
            }

我得到的错误是:“准备命令定义时发生错误。有关详细信息,请参阅内部异常。”

内部异常:“由于对象的当前状态,操作无效。”

4

2 回答 2

1

显然,这里的问题出在 EDMX 文件的某处以及它从 Oracle 读取的方式中。我删除了该表并在数据库和 EDMX 中重新创建它,然后将其添加回来。那时它工作得很好。

于 2013-01-30T20:41:10.013 回答
0

我看到的唯一一件奇怪的事情是你没有为你的 Pk 值使用序列。您可以尝试创建一个,看看是否有帮助。

于 2013-01-30T22:07:42.393 回答