エフォートによるユニットテスト - アイデンティティをオフにしたレコードの追加


質問

私はいくつかのユニットテストを行うためにEffort(EF4用)を使用しています。

var ctx= Effort.ObjectContextFactory.CreateTransient<TheContext>(Shared.Connection);
ctx.companies.AddObject(new company() { ID = 100, name = "Agent", is_agent = true });
ctx.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave);

会社のID列はIDフィールドです。上記のクエリを実行すると、ID値は100ではなく1になります。Effortを使用している間にIdentity_insertを制御する方法はありますか

受け入れられた回答

これは、このスレッドにソリューションを追加するだけです。 @MrBlueSkyは、上記のコメントに解決策の達成されたリンクを追加します 。しかし、リンク上で使用されるDbConfigurationは、最新のEffortにはもう存在しません。解決策はまだEffort.EF6 [version="1.3.0"]ます。また、 SetIdentityFieldsEffortConnection.DbManagerメソッドを使用して、IDフィールドをオンまたはオフにすることができます

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}

オン

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}




ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ