工作单元模式的管理父子关系
-
26-10-2019 - |
题
我使用一个微奥姆(短小精悍)和我在试图拿出一个单元的工作(始终)实现我的仓库使用。我有点困难如何最好地处理与父子(外键)的关系在我始终.因此,举例来说,如果我有以下两个实体的地图直接向数据库表:
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; }
}
其中一个用户具有父子关系与ClientDatabase通过外交的关键用户。ClientDatabaseId.Id财产上的用户和ClientDatabase身份列。我始终界定义如下:
public interface IUnitOfWork
{
void MarkDirty(object entity);
void MarkNew(object entity);
void MarkDeleted(object entity);
void Commit();
void Rollback();
}
在某些时候,在同一IUnitOfWork我想要呼叫MarkNew()为两个ClientDatabase和用户,然后提交().现在我想要什么发生的情况是对ClientDatabase可以保存第(儿童实体),并随后为标定在ClientDatabase,作为它的一个结果就是数据库的插入,将其设置为的ClientDatabaseId外键的财产上的用户之前,它随后也插入数据库。我只是想知道,是否任何人都不得不解决这类问题中的一个很好的通用时尚?
解决方案
为什么你不就是使用你的用户类 根聚集.所以之前你做了一个插到数据库,用于代码将检查如果ClientDatabase不是空。如果没空,然后你可以检查Id酒店看到的,如果它的一个新的ClientDatabase或现有的人(来决定,如果您需要做的插入或更新)。然后您可以填充ClientDatabaseId财产。
不隶属于 StackOverflow