[英]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.