在泛型类中不起作用

时间:2017-07-29 12:01:44

标签: c# winforms entity-framework

我需要将此代码用于查找用户:

主要项目:

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

    var qUser = usersManagerService.Find(x => x.Username == "k" && x.Password == "k");
    InitializeComponent();
}

EFUesrService:

public class EfUserService : EfGenericService<User>, IUser
{
    public EfUserService(IUnitOfWork uow) : base(uow)
    {
    }
}

EFGenericService:

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();
    }
}

它找不到任何这个,但这个用户&#34; K&#34;存在于数据库中 问题是什么?我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

您可以尝试诊断问题:

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

var qUser = usersManagerService.Find(x => x.Username == "k" && x.Password == "k");

类似

var qUser = usersManagerService.Find(x => x.Username == x.Username);

2a)如果您已成功获取某些数据,则可以将上述更改为更具体的数据,例如

var qUser = usersManagerService.Find(x => x.Username == "k");

ie:检查用户名是否正确或检查密码是否正确。

2b)如果你没有得到任何数据,那么你需要查看可能的数据库连接等(并且可能包含更多信息以及你尝试过的不成功的信息)。