Mikro-orm (dapper) kullanıyorum ve kullanacak depolarım için bir Birim İş (UoW) uygulaması geliştirmeye çalışıyorum. UoW'mdaki ebeveyn-çocuk (yabancı anahtar) ilişkilerini en iyi nasıl ele alacağımı biraz şaşırdım. Ben veritabanı tablolarına doğrudan eşleme iki tarafını aşağıdaki varsa örneğin Yani: Bir Kullanıcı yabancı anahtar User.ClientDatabaseId üzerinden bir ClientDatabase ile ebeveyn-çocuk ilişkisi vardırÇalışma deseni birimi - ana çocuk ilişkileri yönetme
public class User
{
public int Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Name { get; set; }
public int ClientDatabaseId { get; set; }
public ClientDatabase ClientDb { get; set; }
}
public class ClientDatabase
{
public int Id { get; set; }
public string DataSource { get; set; }
public string FailoverPartner { get; set; }
public string InitialCatalog { get; set; }
}
. Hem User hem de ClientDatabase'deki Id özelliği Kimlik sütunlarıdır. şöyle My UOW arayüzü tanımlanır: Bir noktada
public interface IUnitOfWork
{
void MarkDirty(object entity);
void MarkNew(object entity);
void MarkDeleted(object entity);
void Commit();
void Rollback();
}
, aynı IUnitOfWork içinde ben() Bir ClientDatabase ve bir Kullanıcı ikisi için MarkNew() çağırın ve daha sonra Commit istiyorum. Şimdi olmak istediğim, ClientDatabase'in ilk önce (alt varlık) ve daha sonra ClientDatabase üzerinde ayarlanan ve veritabanı ekleme işleminin bir sonucu olarak, önceki kullanıcı üzerinde ClientDatabaseId yabancı anahtar özelliği olarak ayarlanmasıdır. daha sonra veritabanına eklenir. Ben sadece kimsenin bu tür bir problemi genel bir tarzda çözüp çözmediğini merak ettim.