我想从窗口代码中发送或能够访问数据库,因此我考虑在主窗口上添加构造函数,并从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();
}
}
答案 0 :(得分:0)
您的程序类通常应该是GUI项目的一部分(它也具有window类)。然后,在GUI项目中,您只需要引用db(上下文),而不必引用db(上下文),反之亦然,这消除了循环依赖。
还可以用代码中没有的参数db(ProgramControl的实例; entityContext)来调用MainWindow的构造函数吗?!