Ale*_*ber 8 c# orm design-patterns unit-of-work dapper
我正在使用微型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; }
}
Run Code Online (Sandbox Code Playgroud)
用户通过外键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();
}
Run Code Online (Sandbox Code Playgroud)
在某些时候,在同一个IUnitOfWork中,我想为ClientDatabase和User调用MarkNew(),然后调用Commit().现在我想要发生的是首先保存ClientDatabase(子实体),然后保存ClientDatabase上设置的Id,由于它的数据库插入,将其设置为User之前的ClientDatabaseId外键属性然后也插入数据库.我只是想知道是否有人以一种很好的通用方式解决了这类问题?
| 归档时间: |
|
| 查看次数: |
3803 次 |
| 最近记录: |