現在、ニーズに合わせて 20 年前の Access ベースのアプリケーションを使用しているクライアントのために、新しいアプリケーションを作成中です。このアップグレードの一環として、ユーザーが引き続き古いデータにアクセスできるように、レガシー データ レコードを引き続き転送することを彼は望んでいます。
オーバーホールの一環として、ユーザーは生成されたレポートのクライアントのデフォルト設定を定義できるようになりました (後で行う必要があります)。これは、1 対 1 の関係を持つ 2 つのオブジェクトがあることを意味します:Client
とClientSettings
、後者は以前に存在したことがありません。古いデータを新しいシステムに正常にインポートし、現在、画面と新しい機能をテストしている最中です。
しかし、私はClientSettings
. 何をしても、保存しようとするとエラーが発生するようです。これが私が現在持っているものですClientSettings
:
public class ClientSettings
{
[Key, ForeignKey("Client")]
public int SettingsID { get; set; }
[Required]
public FinancialPeriods FinancialDataPeriodDefault { get; set; }
[Required]
public FinancialPeriods EmployeeDataPeriodDefault { get; set; }
[Required]
public FinancialPeriods MiscDataPeriodDefault { get; set; }
[Required]
public bool ExcludeFromComparisonIfNotSubjectAgency { get; set; }
public virtual Client Client { get; set; }
}
の保存機能の一部は次のClientSettings
とおりです。
var settings = new ClientSettings {
EmployeeDataPeriodDefault = (FinancialPeriods) View.EmployeeDataComboBox.SelectedIndex,
FinancialDataPeriodDefault = (FinancialPeriods) View.FinancialDataComboBox.SelectedIndex,
MiscDataPeriodDefault = (FinancialPeriods) View.MiscDataComboBox.SelectedIndex,
ExcludeFromComparisonIfNotSubjectAgency = View.ExcludeFromComparisonCheckBox.Checked
};
if(SettingsRepository == null) SettingsRepository = new LinkTableRepository<ClientSettings>();
if (CurrentClient.ClientSettings == null)
{
SettingsRepository.Add(settings);
settings.SettingsID = CurrentClient.ID;
SettingsRepository.Save();
}
私は2つの例外のうちの1つを受け取ります。どちらかを取得します (が にSettingsID
設定されている場合DatabaseGeneratedOption.Identity
):
A dependent property in a ReferentialConstraint is mapped to a store-generated column
または(それなしで)私は得る:Cannot insert explicit value for identity column in table 'ClientSettings' when IDENTITY_INSERT is set to OFF
この問題を回避し、レコードを保存するにはどうすればよいですか?
ありがとう。