正确设计公共存储库和上下文

时间:2016-12-05 18:38:15

标签: c# entity-framework

我有UserEntity。此用户可以将ImageEntity作为图库集合。 因此,为UserRepository制作了UserContextUserEntity,为ImageRepository制作了ImageContextImageEntity。 将图片添加到用户的图库时,UserRepository中的代码隐藏是使用ImageRepository将图像添加到数据库(使用用户的GUID),然后只需将其添加到其集合中即可。

模特:

public class ImageEntity : IEntityBase
{
    public DateTime DateCreated { get; set; } = DateTime.Now;
    public Guid Id { get; set; } = Guid.Empty;
    public bool isActive { get; set; } = true;
    public string FullPath { get; set; } = "";
    public Guid RelatedTo { get; set; } = Guid.Empty;
}

public class UserEntity: IEntityBase, IFileRelatableEntity
{
    ...
    public ICollection<ImageEntity> RelatedFiles { get; } = new List<ImageEntity>();
}

用户回购:

public void AddRelatedFiles<T>(Guid p_guid, IEnumerable<IFormFile> p_files) where T : class, IEntityBase, IFileRelatableEntity
    {
        UserEntity user = GetSpecific<UserEntity>(p_guid);
        string relatedWorkAppId = GetSpecific<UserEntity>(user.AssignedToWork).ApplicativeId;
        foreach (var file in p_files)
        {
            // Add using the ImageRepo
            ImageEntity relatedFile = m_fileRepository.AddRelatedFile(p_guid, "Users\\" + relatedWorkAppId, file);
            // Add to the entity
            user.RelatedFiles.Add(relatedFile);
        }
    }

问题: 这导致仅为与ImageEntity相关的图像创建名为UserEntity的SQL表。

  1. 这是多余的
  2. 不可扩展,因为添加另一个实体(如JobEntity)将导致创建另一个表。
  3. 如何执行?:

      {li> relatedTo ImageEntity为FK?
    1. 没有使用.Include的主表创建特殊表格,ImageEntity
    2. 也许你有其他建议吗?

0 个答案:

没有答案