EF,C#:检索模型

时间:2015-11-13 04:19:54

标签: c# database entity-framework

所以我有一个简单的查询,我从我的数据库中选择AppDictionary对象。 我的AppDictionary对象有一个包含3种语言(EN,FR,ES)的字段和一个名为" Text"的字段。我的目标是基于应用程序设置的任何语言,该值是Text字段中的值。例如,我可以有类似的东西。

EN | FR | ES

鞋子chaussure | Zapato

如果用户的语言设置为英语,则文本字段将填充Shoe,如果是西班牙语,则文本字段将填充Zapato。

我想知道是否还有我从db中执行EF读取,即context.Appdictionaries.Where ...并根据我给它的参数填充Text字段。

非常感谢任何帮助。

在原始SQL中,我只是别名,但我不确定如何告诉EF这样做。

对不起,这是我班上的样子。请注意所有语言的字段。

public class AppDictionary
{
    public int Id { get; set; }
    [NotMapped]
    public string Text;
    ...
    public string EN { get; set; }

    public string FR { get; set; }

    public string DE { get; set; }

    public string PT { get; set; }

    public string ES { get; set; }

1 个答案:

答案 0 :(得分:0)

是的,您可以在Where<T>(Expression<Func<T,bool>> predicate)类型上使用IQueryable<T>,或者您的Context将返回IQueryable<T>,其中T是您object } - AppDictionary(大概)。

生成的SQL将创建一个使用谓词的WHERE子句;

执行时(或Enumerated on),查询将填充结果。

//presumed to be your 'Entity'.
public partial class AppDictionary
{
    public string Language {get;set;}
    public string Text {get;set;}
}


public IEnumerable<string> GetResults(string lang)
{
    var query = context.AppDictionaries.Where((record) => String.Compare(record.Language.ToLower(), lang.ToLower(), true) == 0);

    return query.AsEnumerable(); //executes and loads at this point
}

这是一个相当简单的查询表达式。