Ef核心2个不同的表到相同的dto



我正在选择一个IQueryable,所以这个IQueryaable可以来自两个不同的表,但dto是相同的。我的问题是,我正在复制代码,因为每个代码都有select。有没有办法创建一个通用方法来接收IQueryable并在其中进行选择?

您有一个接口:

interface INamed{
string Name {get; set;}
}

您有两个不同的表实体来实现它,因为它们都有一个Name属性:

public class Person : INamed {
public string Name { get; set; }
}
public class Company: INamed {
public string Name { get; set; }
}

您有一个映射方法,它接受任何实现INamed的对象,并踢出Name集为的对象

SomeDto Map(INamed x){
return new SomeDto { Name = x.Name }
}

你可以恰当地称之为:

context.Persons.Select(person => Map(person) );
context.Companies.Select(company => Map(company) );

最新更新