C# 如何获取SQL Server Express数据库和DbContext对象以共享数据?
我对这一切还很陌生,所以希望这是一个快速修复 我有一个通过Microsoft SQL Server Express创建的SQL Server Express数据库。我正在使用VisualStudioCommunityEdition 我正在尝试创建一个简单的程序来输入/检索/操作数据库信息 如果将数据库设置为程序数据源,然后将表单控制器绑定到数据库表,则表单控件将显示数据库表中的记录。没有问题,但我希望能够在程序中轻松使用数据,因此我正在研究C# 如何获取SQL Server Express数据库和DbContext对象以共享数据?,c#,database,entity-framework,dbcontext,sql-server-express,C#,Database,Entity Framework,Dbcontext,Sql Server Express,我对这一切还很陌生,所以希望这是一个快速修复 我有一个通过Microsoft SQL Server Express创建的SQL Server Express数据库。我正在使用VisualStudioCommunityEdition 我正在尝试创建一个简单的程序来输入/检索/操作数据库信息 如果将数据库设置为程序数据源,然后将表单控制器绑定到数据库表,则表单控件将显示数据库表中的记录。没有问题,但我希望能够在程序中轻松使用数据,因此我正在研究DbContext 我可以通过VisualStudio的
DbContext
我可以通过VisualStudio的“从数据库创建模型”向导生成DbContext
,它的表链接看起来很正确
如果我声明了DbContext
,然后将其设置为项目的数据源,则在创建它们时会产生这些数据和记录。我可以使用这些对象来处理我想要的数据
但是,这些记录不与数据库共享。数据库中的数据也不会以这种方式发送到程序。在SQLServerExpress中创建的现有记录在启动时不包括在内,因为如果我直接链接到数据库,这些记录就会包括在内
您知道如何使用DbContext
接收现有数据库信息,并将新的/更新的数据发送回SQL Server数据库吗
必须有一个简单的答案,而且很可能已经在这里了。我只是觉得有点难找到我想要的具体答案,因为我还是个新手,不知道如何清楚地问这个问题
他们为什么不共享数据?有没有我忽略的命令
干杯如果您在Express edition数据库中的SQL Server Management Studio中创建了数据库,那么它很可能存储在SQL Server的
SQLEXPRESS
实例中,您可以使用服务器/实例名\SQLEXPRESS
或(本地)访问该实例\SQLEXPRESS
或yourpname\SQLEXRPESS
然而,Visual Studio倾向于使用SQL Server Express的LocalDB
实例—面向开发人员的SQL Server“版本”—因此您的连接字符串可能会使用类似(LocalDB)\v11.0
或类似的东西—它基本上连接到一个完全不同的SQL Server实例
如果要使用数据库的
SQLEXPRESS
实例(即使用SQL Server管理工具创建的实例),则只需确保实体框架连接字符串(通常在web.config
文件中)也使用(本地)\SQLEXPRESS
作为数据源=
(或连接字符串中的server=
)参数如果您在Express edition数据库中的SQL server Management Studio中创建了数据库,则它很可能存储在SQL server的SQLEXPRESS
实例中,您可以使用服务器/实例名称\SQLEXPRESS
或(本地)访问该实例\SQLEXPRESS
或yourpname\SQLEXRPESS
然而,Visual Studio倾向于使用SQL Server Express的LocalDB
实例—面向开发人员的SQL Server“版本”—因此您的连接字符串可能会使用类似(LocalDB)\v11.0
或类似的东西—它基本上连接到一个完全不同的SQL Server实例
如果要使用数据库的
SQLEXPRESS
实例(即使用SQL Server管理工具创建的实例),则只需确保实体框架连接字符串(通常在web.config
文件中)也使用(本地)\SQLEXPRESS
作为数据源=
(或连接字符串中的server=
)参数这里有一些很好的建议,可以帮助某人。目前,我没有意识到我必须手动从SQL数据库加载和保存数据
我需要创建一个DbSet并将其设置为等于entity表。
乙二醇
因此,我需要将表反弹到一个DbSet,然后将DbSet设置为BindingSource.DataSource
这将允许您访问SQL数据
要保存新记录,请对entity framework对象使用.SaveChanges()方法
我给其他Noob的建议是,当实体框架链接到SQL表时,这并不意味着数据会自动链接。为了更新数据库(和对象),您仍然需要自己加载和保存信息.这里有一些很好的建议,可以帮助一些人。目前,我没有意识到我必须手动从SQL数据库加载和保存数据 我需要创建一个DbSet并将其设置为等于entity表。 乙二醇 因此,我需要将表反弹到一个DbSet,然后将DbSet设置为BindingSource.DataSource 这将允许您访问SQL数据 要保存新记录,请对entity framework对象使用.SaveChanges()方法
我给其他Noob的建议是,当实体框架链接到SQL表时,这并不意味着数据是自动链接的。为了更新数据库(和对象),您仍然需要自己加载和保存信息。仔细查看EF模型(DbContext)所使用的连接字符串正在使用。谢谢,伙计,原来这不是我的问题。不过,我确实花了一些时间(如您所建议的)探索连接字符串并找出它的全部含义。否则我不会这么做。再次干杯。欢迎使用StackOverflow。#SoreadytoHelp仔细查看EF模型(DbContext)所使用的连接字符串正在使用。谢谢,伙计,原来这不是我的问题。不过,我确实花了一些时间(如您所建议的)探索连接字符串和工作
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Entity;
namespace Gui_mockups
{
public partial class Form1 : Form
{
Lab_Assistant_backendEntities Database;
DbSet data;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Database = new Lab_Assistant_backendEntities();
data = Database.Sample_Register;
data.Load();
sample_RegisterBindingSource.DataSource = data.Local;
}
private void sample_RegisterBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
Database.SaveChanges();
}
}