如何获取SQL Server Express数据库和DbContext对象以共享数据?
我仍然很新,所以希望这是一个快速解决方案。如何获取SQL Server Express数据库和DbContext对象以共享数据?
我有一个通过Microsoft SQL Server Express创建的SQL Server Express数据库。我正在使用Visual Studio社区版。
我想创建一个简单的程序来输入/检索/操作数据库信息。
如果我将我的数据库设置为程序数据源,然后将表单控制器绑定到数据库表,那么表单控件将显示数据库表中的记录。没有问题,但我希望能够在程序内轻松使用数据,所以我正在调查DbContext
。
我可以通过Visual Studio的'从数据库创建模型'向导生成DbContext
就好了,它的表链接看起来是正确的。
如果我声明DbContext
,然后将其设置为项目的数据源,则此作品和记录会在创建时生成。我可以使用这些对象来操纵我想要的数据。
但是记录不与数据库共享。此外,数据库中的数据不会以这种方式发送到程序中。例如,在SQL Server Express中创建的现有记录在启动时不包含,因为它们会直接链接到数据库。
您是否知道我怎样才能真正使用DbContext
来接收现有的数据库信息并将新的/更新的数据发送回SQL Server数据库?
必须有一个简单的答案,它可能已经在这里。当我还很新,我不知道如何明确地提出问题时,我发现我很难找到具体的答案。
他们为什么不共享数据?有一些我忽略的命令吗?
干杯
如果在SQL Server Management Studio中创建数据库的Express版本的数据库中,那么最有可能它存储在SQL Server的SQLEXPRESS
例如,你可以用.\SQLEXPRESS
或(local)\SQLEXPRESS
服务器/实例名称访问或YourPcName\SQLEXRPESS
。
但是Visual Studio倾向于使用SQL Server Express的实例 - 面向开发人员的SQL Server版本 - 因此您的连接字符串可能使用类似(localdb)\v11.0
之类的东西 - 基本上连接到一个完全不同的实例的SQL Server。
如果你想使用你的数据库的SQLEXPRESS
实例 - 你与SQL Server管理工具创建的 - 那么只需要确保你的实体框架的连接字符串(通常在web.config
文件)也使用(local)\SQLEXPRESS
作为data source=
(或server=
)连接字符串中的参数
谢谢伙伴,事实证明这也不是我的问题,但像以前的答案,它让我看看我的项目是从哪里获取其数据源。再次欢呼。 – Kezzla
这里有一些很好的建议可以帮助某人。就目前而言,我并没有意识到我不得不手动加载和保存来自SQL数据库的数据。
我需要创建一个DbSet并将其设置为等于实体表。 如
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();
}
}
所以,我需要的表反弹到DbSet,然后设置DbSet是BindingSource.DataSource
这将允许您访问SQL数据。
保存新记录对实体框架对象使用.SaveChanges()方法。
我对其他noobs的建议是要明白,虽然您的实体框架链接到您的SQL表,但这并不意味着数据会自动链接。您仍然需要自己加载和保存信息以更新数据库(和对象)。
仔细查看EF模型(DbContext)正在使用的连接字符串。 –
谢谢伙伴,原来,这不是我的问题。不过,我花了一些时间(正如你所建议的那样)探索连接字符串并找出它的含义。否则我不会那样做。再次欢呼。 – Kezzla
欢迎来到*。 #SOReadyToHelp –