Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 使用LINQ2SQL在ASP.NET MVC中跨各种模型存储库共享数据上下文_C#_Asp.net Mvc_Linq To Sql - Fatal编程技术网

C# 使用LINQ2SQL在ASP.NET MVC中跨各种模型存储库共享数据上下文

C# 使用LINQ2SQL在ASP.NET MVC中跨各种模型存储库共享数据上下文,c#,asp.net-mvc,linq-to-sql,C#,Asp.net Mvc,Linq To Sql,我的应用程序中有两个存储库,每个存储库都有自己的datacontext对象 最终结果是,我试图将从一个存储库检索到的对象附加到从另一个存储库检索到的对象,从而导致异常。使用构造函数注入将DataContext注入每个存储库: public class MyRepository : IMyRepository { private readonly DataContext dataContext; public MyRepository(DataContext dataContex

我的应用程序中有两个存储库,每个存储库都有自己的datacontext对象


最终结果是,我试图将从一个存储库检索到的对象附加到从另一个存储库检索到的对象,从而导致异常。

使用构造函数注入将DataContext注入每个存储库:

public class MyRepository : IMyRepository
{
    private readonly DataContext dataContext;

    public MyRepository(DataContext dataContext)
    {
        if(dataContext == null)
        {
            throw new ArgumentNullException("dataContext");
        }

        this.dataContext = dataContext;
    }

    // implement MyRepository using this.dataContext;
}

这允许您以任何必要的方式共享或不共享DataContext。

如果您说“这允许您共享或不共享DataContext”,为什么会出现ArgumentNullException?我只是想理解,谢谢。Guard子句是用来保证类的不变量的。这与您是否可以共享DataContext(您可以共享)无关。谢谢Mark。如果我理解正确,您建议的解决方案有一个额外的构造函数,所以您可能需要为每个控制器提供一个DataContext@马克·西曼,再次感谢你!我读了很多mvc模式,最后我想我有了这个答案:O)不是一个额外的构造函数-构造函数。