使用实体框架/LINQ,是否可以一劳永逸地定义默认对象

本文关键字:一劳永逸 定义 对象 默认 是否 实体 框架 LINQ | 更新日期: 2023-09-27 18:32:26

在实体框架(代码优先)中,有没有办法定义默认对象,而不必每次进行查询时都执行添加DefaultIfEmpty(new ....)?相反,每当您调用 FirstOrDefault()LastOrDefault()SingleOrDefault() 并且返回的结果为空时,它都会返回定义的默认对象?

使用实体框架/LINQ,是否可以一劳永逸地定义默认对象

通过向

函数式编程中的代码添加扩展方法,可能会有更简单的解决方案。

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 时看到的值。