使用实体框架/LINQ,是否可以一劳永逸地定义默认对象
本文关键字:一劳永逸 定义 对象 默认 是否 实体 框架 LINQ | 更新日期: 2023-09-27 18:32:26
在实体框架(代码优先)中,有没有办法定义默认对象,而不必每次进行查询时都执行添加DefaultIfEmpty(new ....)
?相反,每当您调用 FirstOrDefault()
、 LastOrDefault()
、 SingleOrDefault()
并且返回的结果为空时,它都会返回定义的默认对象?
通过向
函数式编程中的代码添加扩展方法,可能会有更简单的解决方案。
using System;
namespace GetOrElse
{
public static class GetOrElseExtension
{
public static T GetOrElse<T>(this Nullable<T> instance, T orElse) where T: struct
{
if (instance == null)
return orElse;
return instance.Value;
}
}
}
然后使用它通过调用来缩短键入量(在此示例中,获取一个字符串值 -
var result = YourEntity.Where(...).FirstOrDefault().GetOrElse<string>("DefaultValueHere");
参考: https://gist.github.com/ijoyce/1366016
据我所知,您无法控制它 - 它是所用数据类型的默认值(null,int 为零等)我通常使用??运算符与 FirstOrDefault 结合使用,以分配我想在它为 null 时看到的值。