我使用一个微奥姆(短小精悍)和我在试图拿出一个单元的工作(始终)实现我的仓库使用。我有点困难如何最好地处理与父子(外键)的关系在我始终.因此,举例来说,如果我有以下两个实体的地图直接向数据库表:

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财产。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top