我正在使用微型orm(dapper),並試圖爲我的存儲庫使用工作單元(UoW)實現。在我的UoW中,如何最好地處理親子(外鍵)關係,我有點難過。因此,舉例來說,如果我有以下兩個實體直接映射到數據庫表:工作單元模式 - 管理父母子女關係
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; }
}
在用戶已經通過外鍵User.ClientDatabaseId一個ClientDatabase父子關係。 User和ClientDatabase上的Id屬性均爲Identity列。我UOW接口定義如下:
public interface IUnitOfWork
{
void MarkDirty(object entity);
void MarkNew(object entity);
void MarkDeleted(object entity);
void Commit();
void Rollback();
}
在某一點上,同樣IUnitOfWork內我想打電話給MarkNew()兩個一ClientDatabase和用戶,然後提交()。現在我想要發生的事情是,首先保存ClientDatabase(子實體),然後爲ClientDatabase上設置的Id(作爲其數據庫插入的結果)在User之前設置爲Client上的ClientDatabaseId外鍵屬性然後也被插入到數據庫中。我只是想知道是否有人用一種很好的通用方式解決了這類問題?