c# - 将实体上下文传递给其他方法和对象

标签 c# entity-framework design-patterns

我想知道在类之间传递上下文的最佳方式是什么。我应该使用 ref 参数还是简单地将上下文作为参数传递?最好是构造函数,但在静态方法的情况下,最好的方法是什么? IE。性能、安全、设计等。将上下文作为参数传递是否会影响性能?如果不同的线程在使用引用时同时处理上下文,是否可能会发生冲突?

主.cs

static void Main(string[] args)
{
    var context = new MyEntities();

    var myClass = new MyClass(context);
    myClass.AddPerson();
    // or
    Person.AddPerson(ref context);
}

我的类.cs

public class MyClass
{
    public void MyClass(MyEntities context) { }

    public void AddPerson()
    {
        context.People.AddObject(new Person());
    }
}

MySecondClass.cs

public partial class Person
{
    public static AddPerson(ref MyEntities context)
    {
        // Do something
    }
}

最佳答案

ref 关键字意味着您通过引用传递指针,因此更改变量的值将为调用者更改它。又名:

static void Main(string[] args)
{
    var context = new MyEntities();
    Person.AddPerson(ref context);

    // context is now null
}

调用:

public partial class Person
{
    public static AddPerson(ref MyEntities context)
    {
        context = null;
    }
}

在这种情况下,您不会通过引用传递。请记住,变量是指向对象的指针,因此简单地传递它不会像在 C++ 中那样复制对象。

关于c# - 将实体上下文传递给其他方法和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154346/

相关文章:

c# - 如何在 Windows Mobile 中为 WM_DEVICECHANGE 消息注册表单

c# - 解码引用可打印正确

c# - 重命名 C# 项目以映射到正确的配置

c# - 非静态方法需要一个目标

c# - 起订量 DbSet NotImplementedException

entity-framework - Entity Framework 一对一关系映射在代码中扁平化

c++ - 这是设计缺陷吗?

c# - 好奇的 DllImport 问题,当传递一个 LONG 参数内存损坏时

java - 如何在 checkstyle 中编写自定义检查?

java - 单例中的双重检查锁定