在Visual Studio中使用另一个项目中的对象

时间:2019-06-17 18:13:35

标签: c# object constructor

我想从窗口代码中发送或能够访问数据库,因此我考虑在主窗口上添加构造函数,并从Program类发送上下文,在该类中我显示窗口并加载数据库,但是上下文在程序项目中,并且我已经在引用窗口项目,所以我不能有循环引用

我有两个项目,一个用于GUI,另一个用于所有类,包括实体框架数据库的Context

class ProgramControl: DbContext
{

    public DbSet<Asignaturas> Asigns { get; set; }

    public DbSet<Alumno> Alumnos { get; set; }

    public DbSet<Profesor> Profes { get; set; }

    public DbSet<Aula> Aulas { get; set; }




}


public class Program
{
    public static void Main(string[] args)
    {
        using (var db = new ProgramControl()) {
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
        }
    }
}


public partial class MainWindow : Window
{
    public static MainWindow AppWindow;


    public MainWindow()

    {
        InitializeComponent();
        AppWindow = this;

    }

    private void AlumnoButton_Click(object sender, RoutedEventArgs e)
    {
        Window1 window1 = new Window1();
        window1.Show();
    }

    private void ExitButton_Click(object sender, RoutedEventArgs e)
    {
        Close();
    }

    private void AsignaturasButton_Click(object sender, RoutedEventArgs e)
    {
        Window2 window2 = new Window2();
        window2.Show();
    }

    private void ProfesorButton_Click(object sender, RoutedEventArgs e)
    {
        Window3 window3 = new Window3();
        window3.Show();
    }
}

1 个答案:

答案 0 :(得分:0)

您的程序类通常应该是GUI项目的一部分(它也具有window类)。然后,在GUI项目中,您只需要引用db(上下文),而不必引用db(上下文),反之亦然,这消除了循环依赖。

还可以用代码中没有的参数db(ProgramControl的实例; entityContext)来调用MainWindow的构造函数吗?!