如何使用DbSet使用泛型类型

本文关键字:泛型类型 何使用 DbSet | 更新日期: 2023-09-27 18:01:28

有一个接口:

public interface ILanguageEntity
{
    int Id { get; set; }
    string Name { get; set; }
    string Code { get; set; }
    string Culture { get; set; }
    string LocalName { get; set; }
    bool IsRightToLeft { get; set; }
}

我把它实现为一个实体,像这样:

public class LanguageEntity : ILanguageEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public string Culture { get; set; }
    public string LocalName { get; set; }
    public bool IsRightToLeft { get; set; }
}

在我的服务中,我想为这个实体有一个属性,它返回它的DbSet,像这样:

public class LanguageService : ILanguageService
{
    public ApplicationContext Context { get; set; }
    public DbSet<ILanguageEntity> DbSet { get { return Context.Set<LanguageEntity>(); } }
}

但这是不可能的,因为我返回一个DbSet<LanguageEntity>类型,而我必须返回一个DbSet<ILanguageEntity>类型的编译器说。我该怎么办?

如何使用DbSet<T>使用泛型类型

我假设ApplicationContext应该至少有一个ILanguageEntity DbSet

这是我想到的:

public class LanguageService : ILanguageService
{
    public ApplicationContext Context { get; set; }
    public DbSet<ILanguageEntity> DbSet
    {
        get
        {
            return Context.LanguageEntities;
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}
public class ApplicationContext : DbContext
{
    public DbSet<ILanguageEntity> LanguageEntities { get; set; }
}
public interface ILanguageService
{
    DbSet<ILanguageEntity> DbSet { get; set; }
}