C# 泛型类中的非工作函数

C# 泛型类中的非工作函数,c#,winforms,entity-framework,C#,Winforms,Entity Framework,我需要使用此代码查找用户: 主要项目: public MainWindow() { var usersManagerService = StructureMapDefnation.Container.GetInstance<IUser>(); var qUser = usersManagerService.Find(x => x.Username == "k" && x.Password == "k"); InitializeCompo

我需要使用此代码查找用户:

主要项目:

public MainWindow()
{
    var usersManagerService = StructureMapDefnation.Container.GetInstance<IUser>();

    var qUser = usersManagerService.Find(x => x.Username == "k" && x.Password == "k");
    InitializeComponent();
}
public主窗口()
{
var usersManagerService=structuremapdefinition.Container.GetInstance();
var qUser=usersManagerService.Find(x=>x.Username==“k”&&x.Password==“k”);
初始化组件();
}
EFUesrService:

public class EfUserService : EfGenericService<User>, IUser
{
    public EfUserService(IUnitOfWork uow) : base(uow)
    {
    }
}
公共类EfUserService:EfGenericService,IUser
{
公共EfUserService(IUnitOfWork uow):基本(uow)
{
}
}
eGenericService:

public class EfGenericService<T> : IGenericService<T> where T : class
{
    protected IUnitOfWork Uow;
    protected IDbSet<T> Entites;

    public EfGenericService(IUnitOfWork uow)
    {
        Uow = uow;
        Entites = Uow.Set<T>();
    }

    public T Find(Func<T, bool> predicate)
    {
        return Entites.Where(predicate).FirstOrDefault();
    }
}
public类EfGenericService:IGenericService其中T:class
{
受保护的工作单元Uow;
受保护的IDbSet实体;
公共eGenericService(IUnitOfWork uow)
{
Uow=Uow;
Entites=Uow.Set();
}
公共T查找(Func谓词)
{
返回Entites.Where(谓词).FirstOrDefault();
}
}
它找不到任何此项,但数据库中存在此用户“K”。

有什么问题吗?如何解决此问题?

您可以尝试以下几点来诊断此问题:

1) 让我们放宽条件以确保数据库中有任何数据。这将检查与数据库的连接是否正常工作。 替换

变成

var qUser = usersManagerService.Find(x => x.Username == x.Username);
2a)如果您已成功获取一些数据,则可以将上述内容更改为更具体的内容,例如

var qUser = usersManagerService.Find(x => x.Username == "k");
ie:检查用户名是否正确或密码是否正确


2b)如果您未能获得任何数据,则可能需要查看数据库连接等(可能包括更多信息以及您尝试过但未成功的内容)。

K还是K?注意区分大小写。仅供参考:在窗体的构造函数中调用db操作不是一个好主意。此外,共享服务中的工作单元可能会导致许多问题。EF有更好的存储库实现方式,但并不是很多人认为它是EF的反模式。用户密码< K>代码>也>代码> K< /代码>?您已直接连接到数据库并验证@kianoush?
var qUser = usersManagerService.Find(x => x.Username == "k");