【问题标题】:Getting Results With Entity Framework使用实体框架获取结果
【发布时间】:2015-07-28 01:05:47
【问题描述】:

我正在尝试查询数据库集,但在获得结果时似乎无法访问数据。这是我尝试过的代码。

查询 #1:

public List<CustomerMain> testing()
{
        var context = new CustomerEntities();

        var query = context.CustomerMains
            .Where(p=> p.FirstName == "Thor")
            .Select(p => new CustomerMain {FirstName=p.FirstName,LastName =p.LastName}).ToList();

        return query;
}

查询 #2:

public IQueryable<CustomerMain> testing()
{
        var context = new CustomerEntities();

        var query = context.CustomerMains
            .Where(p=> p.FirstName == "Thor")
            .Select(p => new CustomerMain {FirstName=p.FirstName,LastName =p.LastName});

        return query;
}

CustomerMain 是我的DbSet,如果我运行其中任何一个并将该方法分配给 var 变量,我将无法从变量中获取FirstNameLastName。我发现如果我将其转换为 CustomerMain 就可以做到,但返回查询不应该是 CustomerMain 类型吗?

【问题讨论】:

  • 显示您如何调用该方法并尝试访问属性。作为旁注 - here's a question 关于从存储库方法返回不同集合/查询类型的优缺点。

标签: c# entity-framework


【解决方案1】:

它让我无法从变量中获取名字或姓氏

因为该方法返回一个集合或可查询,而不是单个实体。您需要迭代或选择记录:

var customers = testing();
foreach (CustomerMain customer in customers)
{
    // access customer.FirstName
}

或者:

var customers = testing();
var oneCustomer = customers.FirstOrDefault(c => c.FirstName == "Thor");
// access oneCustomer.FirstName

或者,如果您希望该方法返回一条记录(如果没有找到则返回 null):

public CustomerMain FindOne(string firstName)
{
    using (var context = new CustomerEntities())
    {    
        var query = context.CustomerMains.Where(p => p.FirstName == firstName);

        return query.FirstOrDefault();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    相关资源
    最近更新 更多