繁体   English   中英

没有Lambda表达式的实体框架查询

[英]Entity framework query without lambda expression

因此,我正在写一个“半通用”类,该类一次又一次地符合签名

public class BaseSupportRepo<TEntity, TDto> where TEntity : class where TDto : class

所有使用此类的仓库都具有一个名为Name属性。

我想做的是编写一个函数,如果名称匹配某些输入(但是名称不是主键),则该函数将返回.Single()。

现在,如果这是一个非泛型函数,那将很容易,因为

.Single(g => g.Name == name)

但是,因为这是通用函数,所以不能使用.Name属性,因为TEntity可能没有任何属性Name。

EF中是否有任何功能可以使类似于以下内容:

.Single(string key, string value)

这将使我绕开这一要求。

创建界面:

public interface IEntityWithName
{
    string Name { get; set;}
}

并将您的回购更改为:

public class BaseSupportRepo<TEntity, TDto> where TEntity : class, IEntityWithName 
                                            where TDto : class

如果您具有使用edmx文件生成的代码,则可以更改生成您的类的T4模板以实现IEntityWithName或创建如下的部分类:

public partial class SomeEntity : IEntityWithName
{
}

然后,您可以编写一个可以使用Name的查询

看一下这个故事: 在哪里可以找到System.Linq.Dynamic dll? 我相信Dynamic.cs是由Microsoft的某人编写的,它使您可以使用字符串而不是lambda来编写Linq查询。 在我目前正在从事的项目中,它对我很方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM