gpt4 book ai didi

.net - EF : Can I have single point for lambda to class instance conversion?

转载 作者:行者123 更新时间:2023-12-04 06:45:22 24 4
gpt4 key购买 nike

我使用 ADO.NET Entity Framework 和几个返回相同域实体的数据访问层方法。随它去:

class PersonEntity {
public int Id { get; set; }
public string Name { get; set; }
}

和方法通过不同的标准返回 Person 实体:
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 });
}

ETC。代码块 x => new PersonEntity { Id = x.Id, Name = x.Name }非常重复(这对于多字段实体来说非常烦人)但我不能把它放在一个点上,比如静态方法:
PersonEntity ConvertToPersonEntity(Person x) {
return new PersonEntity { Id = x.Id, Name = x.Name }
}

这种外部函数调用不能翻译成 SQL 运算符。这里有什么解决方法可以将转换保持在一个地方吗?

先感谢您!

最佳答案

是的,你可以这样做:

Expression<Func<Person, PersonEntity>> ConvertToPersonEntity() {
return x => new PersonEntity { Id = x.Id, Name = x.Name };
}

...进而:
PersonEntity GetById(int id) {
var exp = ConvertToPersonEntity();
return db.Person.FirstOrDefault(exp);
}

关于.net - EF : Can I have single point for lambda to class instance conversion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3812072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com