クラスのアカウントと都市に関連付けられているクラスの連絡先があります。市はクラス状態に関連付けられています。新しい連絡先データを挿入しようとすると、関連付けられたクラスも挿入されます。これはどのように起こりますか?そして、それを修正する方法は?
メソッド InsertOnSubmit
public void InsertOnSubmit<T>(T data) where T : class
{
lock (_lockObj)
{
using (DataModel dx = new DataModel(this._adapter.ConnectionString))
{
dx.DeferredLoadingEnabled = false;
dx.GetTable<T>().InsertOnSubmit(data);
dx.SubmitChanges();
}
}
}
新しい連絡先を追加
InsertOnSubmit(new Contact { Name = this.Name, Account = Session.Account, City = this.CurrentCity });
注: オブジェクトの都市、アカウント、および州は、異なるデータ コンテキストからのものです。データベース サーバーとして SQL Server Compact 3.5 を使用しています。
dx.SubmitChanges() が起動されたときのコンソールからのログ
INSERT INTO [State]([Name])
VALUES (@p0)
-- @p0: Input String (Size = 0; Prec = 0; Scale = 0) [Center America]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
SELECT CONVERT(Int,@@IDENTITY) AS [value]
-- @ROWCOUNT: Input Int32 (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
INSERT INTO [City]([StateId], [Name])
VALUES (@p0, @p1)
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [10]
-- @p1: Input String (Size = 0; Prec = 0; Scale = 0) [Los Angeles]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
SELECT CONVERT(Int,@@IDENTITY) AS [value]
-- @ROWCOUNT: Input Int32 (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
INSERT INTO [Contact]([AccountId], [CityId], [Name])
VALUES (@p0, @p1, @p2)
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [1]
-- @p1: Input Int32 (Size = 0; Prec = 0; Scale = 0) [18]
-- @p2: Input String (Size = 0; Prec = 0; Scale = 0) [Sarah]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
SELECT CONVERT(Int,@@IDENTITY) AS [value]
-- @ROWCOUNT: Input Int32 (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.1
よろしく、
ブライアン