2017-05-24 5 views
1

エンティティフレームワークを使用していますが、私は適切に設計されていないデータベースを引き渡したので、何も変更することはできません。エンティティフレームワークの自己参照のプライマリキーの挿入

新しいレコードを挿入すると、自動的に自動ID値が生成されます。私はその後、最初の挿入時に生成された同じIDで同じテーブルの列を更新する必要があります。私はこれが達成されていることを見ることができる唯一の方法は、最初に保存し、新しいPKを取得し、次に更新を行うことです。しかし、これは1つのデータベース呼び出しでこれを実現できる他の方法はありますか?私はこれをストアドプロシージャで簡単に実行できることを知っていますが、この時点ではそのオプションはありません。下記の表の構造を参照してください。この表の

人 PERSONIDのInt(自動識別) 姓 姓 HeadOfHouseholdID int型(PERSONIDにFK)

+0

私はあなたがそうすることができないと言ったストアドプロシージャ/挿入トリガ/ etcを使用することができない限り、一回の呼び出しでそれを行うことはできないと思います。フィールドを設定する必要がある場合は、トランザクション内で呼び出しをラップするようにしてください。いずれかが失敗した場合は、レコードは挿入されません。トランザクションを開始する - >レコードを保存する(挿入する) - >レコードを変更する - >レコードを保存する(更新する) - >トランザクションをコミットする – AndrewP

+0

この情報を保存する必要はありません。Simpleルールは同じことを行います:HeadOfHouseHoldID is null PersonIDを取得 –

+0

@SirRufo私のデザインではなく、データベースをまったく変更できません。彼らはビュー内の列を使用しており、それが動作するためには列を作成する必要があります。その奇妙なシナリオ。 – Scott

答えて

0

これは1回のデータベース呼び出しで行うことができる他の方法はありますか?

トリガーまたはカスタムSQLクエリが機能します。しかし、それはおそらく心配する価値がありません。