标签: generic-repository

使用EF Core更新通用存储库上的父级和子级集合

说我有一Sale堂课:

public class Sale : BaseEntity //BaseEntity only has an Id  
{        
    public ICollection<Item> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和一Item类:

public class Item : BaseEntity //BaseEntity only has an Id  
{
    public int SaleId { get; set; }
    public Sale Sale { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以及通用存储库(更新方法):

    public async Task<int> UpdateAsync<T>(T entity, params Expression<Func<T, object>>[] navigations) where T : BaseEntity
    {
        var dbEntity = _dbContext.Set<T>().Find(entity.Id);

        var dbEntry = _dbContext.Entry(dbEntity);

        dbEntry.CurrentValues.SetValues(entity);            

        foreach (var property in navigations) …
Run Code Online (Sandbox Code Playgroud)

c# generics entity-framework-core generic-repository

6
推荐指数
2
解决办法
783
查看次数

每个实体的通用存储库或特定存储库?

背景

在我工作的公司,我被命令更新旧的MVC应用程序并实现SQL数据库的存储库模式.我使用Entity Framework Database-First创建了数据库的上下文,并获得了23个实体.

第一个问题

我是否需要为每个实体创建存储库或为上下文实现通用存储库?我问这个是因为我在搜索互联网时发现了以下内容:

每个域一个存储库

您应该将存储库视为内存中域对象的集合.如果您正在构建名为Vega的应用程序,则不应具有如下所示的存储库:

public class VegaRepository {}

来源:与Mosh一起编程:存储库模式的4个常见错误

第二个问题

通用存储库是否适用于Entity Framework Database-First?这是因为我在搜索互联网时发现了以下内容:

实体框架

请注意,只有在首先使用代码映射的POCO时,存储库模式才有用.否则你只需要用实体打破抽象(=存储库模式不是很有用).如果您想为自己生成基础,可以按照本文进行操作.

来源:CodeProject:存储库模式,做得对

c# entity-framework repository-pattern generic-repository

3
推荐指数
1
解决办法
1384
查看次数