我正在使用微型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外键属性然后也被插入到数据库中。我只是想知道是否有人用一种很好的通用方式解决了这类问题?