1

ADO.NET Entity Data Model で 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 から読み取る方法にありました。テーブルを削除し、DB と EDMX で再作成してから、再度追加しました。それはうまくいきました。

于 2013-01-30T20:41:10.013 に答える
0

奇妙に思える唯一のことは、Pk 値にシーケンスを使用していないことです。作成してみて、それがまったく役立つかどうかを確認してください。

于 2013-01-30T22:07:42.393 に答える