既存のデータベースを使用するアプリをコーディングしています。そのデータベースにはまったく変更できないテーブルがいくつかありますが、それでも新しいテーブルを追加できます。たとえば、Cities という古いテーブルがあるとします。このテーブルの読み取り、作成、更新、および削除はできますが、スキーマを変更することはできません。次に、Cities への外部キーを持つ新しいテーブル Clients を追加しますが、Cities テーブルも変更してリレーションを追加するため、データベース サーバー (SQL SERVER 2008) にリレーションを追加できません。したがって、両方を linq-to-sql コンテキストに追加し、そこに関係を追加すると、linq-to-sql は、関係が確立されていなくても、参照整合性をチェックするのに十分賢いと思いました。データベース、それはコンテキストにあります。
それを試すために新しいプロジェクトを作成し、リレーションのない 2 つの単純なテーブルを追加してから、linq-to-sql デザイナーにリレーションを追加し、参照整合性の例外を強制しようとしましたが、機能していないようです。
DBContextDataContext db = new DBContextDataContext();
City l = new City();
l.name= "Buenos Aires";
db.Cities.InsertOnSubmit(l);
Client c = new Client();
c.name = "Mike";
c.City = l;
db.Clients.InsertOnSubmit(c);
db.SubmitChanges(); // This works
db.Cities.DeleteOnSubmit(l);
db.SubmitChanges(); // This shouldn't work, but it works
参照整合性を強制することが可能かどうか、何か考えはありますか? または、DB にリレーションを追加することが唯一の方法ですか?