Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用(var db=new MyAppContext)从实体框架中的函数中删除锅炉板_C#_Entity Framework_Using - Fatal编程技术网

C# 使用(var db=new MyAppContext)从实体框架中的函数中删除锅炉板

C# 使用(var db=new MyAppContext)从实体框架中的函数中删除锅炉板,c#,entity-framework,using,C#,Entity Framework,Using,在使用实体框架时,将数据函数包装在using语句中是一种标准做法。e、 g using(var db = new MyAppContext()) { return db.Books.ToList(); } 通常内部只有一个return语句。有没有一种方法可以做到这一点,而不必每次都编写using语句。有了新的c#特性,函数的编写将简单得多 public IList<Book> GetAllBooks() => db.Books.ToList() public ILi

在使用实体框架时,将数据函数包装在using语句中是一种标准做法。e、 g

using(var db = new MyAppContext())
{
    return db.Books.ToList();
}
通常内部只有一个return语句。有没有一种方法可以做到这一点,而不必每次都编写using语句。有了新的c#特性,函数的编写将简单得多

public IList<Book> GetAllBooks() => db.Books.ToList()
public IList GetAllBooks()=>db.Books.ToList()
我有很多很多方法像那样使用这个使用块,如果有一种方法不用它,它会使代码更简单


提前感谢您。

我不能说我完全同意您的要求,但是,以下代码:

public static class Extensions
{
    public static TOut DisposeWrapper<TDisposable, TOut>(this TDisposable input, Func<TDisposable,TOut> function) where TDisposable:IDisposable
    {
        try
        {
            return function(input);
        }
        finally
        {
            input.Dispose();
        }
    }
}
为了完整起见,下面是我用来测试此功能的示例类:

public class Example : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("I was disposed of");
    }

    public int SomeMethod() => 1;
}

我不能说我完全同意您的要求,但是,以下代码:

public static class Extensions
{
    public static TOut DisposeWrapper<TDisposable, TOut>(this TDisposable input, Func<TDisposable,TOut> function) where TDisposable:IDisposable
    {
        try
        {
            return function(input);
        }
        finally
        {
            input.Dispose();
        }
    }
}
为了完整起见,下面是我用来测试此功能的示例类:

public class Example : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("I was disposed of");
    }

    public int SomeMethod() => 1;
}

我能问一下C#引入的涉及此
公共IList GetAllBooks()=>db.Books.ToList()
的新特性是什么吗?对我来说,它似乎不是有效的语法。我更新最新的C#版本已经相当晚了。它是新的C#6语法。如果可以嵌入lambda,那么可以编写一个helper函数并执行如下操作:
Books()=>WrapInUsing((Db)=>Db.Books))
WrapInUsing
函数调用其
操作
参数的
using
中,我可以问一下C引入的涉及此
公共IList GetAllBooks()=>db.Books.ToList()的新特性是什么吗?对我来说,它似乎不是有效的语法。我更新最新的C#版本已经相当晚了。它是新的C#6语法。如果可以嵌入lambda,那么可以编写一个helper函数并执行如下操作:
Books()=>WrapInUsing((Db)=>Db.Books))
如果
WrapInUsing
函数调用
操作
参数,在
using
中,这是一个问题。你能解释一下为什么你不批准这个问题吗?@MuhammadIbraheem简单地说,这是一个简明扼要的问题。“仅此而已。你能解释一下为什么你不赞成这样做吗?”穆罕默德·布拉希姆简单地说,“简洁就是简洁。”。这就是全部。