2
我使用ADO.NET实体框架与几个数据访问层方法返回相同的域实体。让它成为:EF:我可以为lambda类转换实例吗?
PersonEntity GetById(int id) {
return db.Person.FirstOrDefault(x => new PersonEntity { Id = x.Id, Name = x.Name });
}
IQueryable<PersonEntity> GetByName(string name) {
return db.Person.Where(x => x.Name == name).Select(x => new PersonEntity { Id = x.Id, Name = x.Name });
}
e.t.c.:
class PersonEntity {
public int Id { get; set; }
public string Name { get; set; }
}
和方法,根据不同的标准返回Person实体代码块x => new PersonEntity { Id = x.Id, Name = x.Name }
非常重复性(这是非常恼人的许多场实体),但我不能把它的单点,例如静态方法:
PersonEntity ConvertToPersonEntity(Person x) {
return new PersonEntity { Id = x.Id, Name = x.Name }
}
这样的外部函数调用不能转换成SQL运营商。有没有什么解决方法可以将转换保留在一个地方?
预先感谢您!
使用非实体类型可能会编译失败。然而,你可以创建一个返回匿名对象初始化表达式的方法,但是如果从编译器的角度来看,这是完全可能的。 – leppie 2010-09-28 11:25:37