更改EF Core中的SingleOrDefault方法返回的内容

问题描述 投票:0回答:1

是否可以更改EF Core中的SingleOrDefault方法返回的内容?

或者默认值始终为空吗?

entity-framework api entity-framework-core default single-instance
1个回答
0
投票

是否可以更改EF Core中的SingleOrDefault方法返回的内容?

没有在这种情况下,“默认”的意思是“除非可空值类型外,为空,然后为默认值”。该术语是从C#中的default operator借用的。

当然,您可以提供自己的扩展方法,该方法可以执行您想要的任何操作。 EG:

static class MyDefaultExtension
{
    public static T SingleOrDefault<T>(this IEnumerable<T> col, Func<T> defaultFactory)
    {
        using (var e = col.GetEnumerator())
        {
            if (e.MoveNext())
            {
                var rv =  e.Current;
                if (e.MoveNext())
                {
                    throw new InvalidOperationException("Sequence contains more than one element");
                }
                return rv;
            }
        }

        if (typeof(T) == typeof(Category))
        {
            return defaultFactory();
        }
        else
        {
            return default(T);
        }

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.