Аналогично тому, как будут вести себя соединения с базой данных в рамках TransactionScope, я хочу иметь возможность проверить внутри своего класса, находится ли он в экземпляре другого класса?
Мой сценарий
У меня есть класс (EntityBase), на котором построены все объекты базы данных, и есть такие методы, как AddToDatabase, UpdateInDatabase, DeleteFromDatabase.
Я хочу создать класс BulkLoader, который будет массово обрабатывать вставки. Тогда у него будет завершенный метод, такой как класс TransactionScope, который будет точкой загрузки данных в базу данных.
Для этого потребуется изменить класс EntityBase, чтобы он вел себя по-разному, если он создается в рамках класса BulkLoader и взаимодействует с этим классом.
Пример кода:
using (BulkLoader bulk = new BulkLoader(connection, transaction))
{
foreach (IToDatabase assignment in assignmentsCollection)
{
assignment.WriteToDataBase(connection, transaction);
}
bulk.Complete();
}
class ClientAssignment : IToDatabase
{
public int WriteToDataBase(IDbConnection connection,
IDbTransaction transaction)
{
foreach (EntityBase account in accountsCollection)
{
account.AddToDataBase(connection, transaction);
}
foreach (EntityBase person in personsCollection)
{
person.AddToDataBase(connection, transaction);
}
}
}
class EntityBase
{
public virtual int AddToDatabase(IDbConnection connection,
IDbTransaction transaction)
{
// question relates to this bit
if (inBulkLoaderClass)
{
// interact with bulk loader
}
else
{
// do existing code
}
}
}