怎样在Windows窗体程序中使用Entity Framework进行数据的增删?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在Windows窗体程序中使用Entity Framework进行数据的增删?相关的知识,希望对你有一定的参考价值。

我用 C#开发Windows窗体应用程序,在一个窗体中使用了DataGridView控件显示数据,把DataGridView控件与EF的查询结果集绑定,数据正常显示(如下图),也能修改(直接在DataGridView中修改然后保存即可,保存按钮的Click事件调用的是DbContext.Savechanges()),但增加和删除不能实现,点增加按钮虽在DataGridView中增加一行,但点保存按钮后,数据保存不仅数据库,同样,点删除按钮删除一行后,数据库也无变化。也许是数据绑定不对。本人是新手,希望高手指点怎样在Windows窗体中使用EF通过DataGridView增删数据。

参考技术A 端点调试一下在删除或者添加一行之后,后台中的数据列表有没有多或者少,然后调用savechange

运行 CMD 和 ffmpeg Windows 窗体

【中文标题】运行 CMD 和 ffmpeg Windows 窗体【英文标题】:Run CMD and ffmpeg Windows Forms 【发布时间】:2022-01-18 15:32:46 【问题描述】:

我正在尝试在我的 Windows 窗体应用程序中使用 ffmpeg,并且我是苹果来转换单个文件,但现在我正在尝试选择整个文件夹并运行 cmd ffmpeg。

我已经使用 cmd 进行了测试,下面的行会自动转换整个文件夹中的所有文件,但我不知道如何在我的 winforms 应用程序中实现这一点。任何人都知道如何将其添加到我的代码中?

for %i in (*.flv) do ffmpeg -i "%i" "%~ni.mkv"

这是我在不选择 PATH 的情况下转换单个文件时使用的示例代码:

// Using OpenFileDialog to get Folder Path
private void button1_Click(object sender, EventArgs e)

     openFileDialog1.ValidateNames = false;
     openFileDialog1.CheckFileExists = false;
     openFileDialog1.CheckPathExists = true;
     openFileDialog1.FileName = "Folder Selection.";

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        
            string folderPath = Path.GetDirectoryName(openFileDialog1.FileName);
            textBox1.Text = folderPath;
        
    

    private void buttonConvert_Click(object sender, EventArgs e)
    
       string output = $"output--DateTime.Now.Ticks.mkv";
        LaunchCommandLineApp("sample.flv", output);
        Process.Start("explorer.exe", "/select, \"" + output + "\"");
    

    private void LaunchCommandLineApp(string input, string outputFile)
    
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        startInfo.FileName = "ffmpeg.exe";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.Arguments = $"-i input outputFile";

        using (Process exeProcess = Process.Start(startInfo))
        
            exeProcess.WaitForExit();
        
    

【问题讨论】:

您期望的服务究竟是什么?您是否希望这个社区中的某个人免费为您编写一些代码?请确保您使用tour,然后通读How to Ask 的页面,以更好地了解您注册的网站是如何工作的。一般来说,我们希望您编写自己的代码,并且当它无法完成编写的任务时,没有任何问题,您会发布该代码,并突出显示问题,以便我们可以重现它,然后提供帮助你在修理它。 在我看来你已经完成了困难的部分,你现在只需要使用Directory.GetFiles。您的问题可以改写为“如何使用 c# 获取目录中的文件?”。你已经有一个答案告诉你如何使用它。 【参考方案1】:

您编写的 DOS 命令是一个重复调用 FFMpeg 命令的 for 循环。在 C# 中执行相同的操作,例如:

foreach(var file in Directory.GetFiles(textBox1.Text, "*.flv")) //textBox1.Text == the folder path
  LaunchCommandLineApp(file, Path.ChangeExtension(file, "mkv"));

如果您的路径有空格,您可能需要考虑在命令中加上引号 - 您的 DOS 命令有空格,而您的 C# 似乎没有空格。

考虑$@"-i ""input"" ""outputFile"""

【讨论】:

以上是关于怎样在Windows窗体程序中使用Entity Framework进行数据的增删?的主要内容,如果未能解决你的问题,请参考以下文章

C中怎样在1个窗体中调用调用另外一个窗体中的方法!

我可以将 Entity Framework Core 6 与 Windows 窗体一起使用(使用 .NET 5)吗?

将 Windows 窗体嵌入到 WPF 应用程序中

使用另一个窗体应用程序更改 Windows 窗体的背景颜色

用vs2010制作了c#windows窗体程序,但打包时在解决方案资源管理器窗口中找不到解决方案无

怎样使用C#的RichTextBox控件