0

私はまだこのすべてでかなり新しいので、うまくいけば、これは迅速な修正です。データを共有するSQL Server ExpressデータベースとDbContextオブジェクトを取得するにはどうすればよいですか?

Microsoft SQL Server Express経由で作成されたSQL Server Expressデータベースがあります。私はVisual Studio Community Editionを使用しています。

データベース情報の入力/取得/操作のための簡単なプログラムを作成しようとしています。

データベースをプログラムデータソースとして設定し、フォームコントローラをデータベーステーブルにバインドすると、フォームコントロールはデータベースのテーブルのレコードを表示します。問題はありませんが、プログラム内で簡単にデータを使用できるようにするため、DbContextを調べています。

DbContextはVisual Studioの 'データベースからモデルを作成する'ウィザードを使って生成することができ、テーブルのリンクは正しく表示されます。

DbContextを宣言し、それをプロジェクトのデータソースとして設定すると、これが動作し、作成時にレコードが生成されます。私はオブジェクトを使用して、私が望むようにデータを操作することができます。

ただし、レコードはデータベースと共有されません。また、データベースからのデータはこの方法でプログラムに送られません。たとえば、SQL Server Express内で作成された既存のレコードは、データベースに直接リンクする場合と同じように、起動時には含まれません。

実際にDbContextを使用して既存のデータベース情報を受信し、新しい/更新されたデータをSQL Serverデータベースに戻す方法を知っていますか?

簡単な答えが必要です。すでにここにある可能性があります。私はまだ私が探している特定の答えを見つけるのはちょっと難しいと思っています。私はまだ新しいので、私は質問をはっきりと聞く方法がわかりません。

なぜデータを共有しませんか?私は見落としているいくつかのコマンドがありますか?

乾杯

+0

EFモデル(DbContext)が使用している接続文字列をよく調べてください。 –

+1

ありがとう、それは私の問題ではないことが分かった。しかし、私はあなたが示唆したように接続文字列を調べて、それが何を意味するのか、何か時間を費やしました。私はそれ以外はやっていないだろう。もう一度乾杯。 – Kezzla

+0

ようこそStackOverflowへ。 #SOReadyToHelp –

答えて

1

あなたのExpress Editionのデータベース内のSQL Server Management Studioでデータベースを作成した場合は、最も可能性が高いそれはあなたが.\SQLEXPRESSまたは(local)\SQLEXPRESSのサーバー/インスタンス名でアクセスすることができ、SQL ServerのSQLEXPRESSインスタンスに格納されていますまたはYourPcName\SQLEXRPESS

Visual Studioは、SQL Server Expressの開発者向けの "バージョン"のLocalDBインスタンスを使用する傾向があります。つまり、接続文字列は(localdb)\v11.0などのようになります。基本的には別のインスタンスに接続しますのSQL Serverの。

あなたのデータベースのSQLEXPRESSインスタンスを使用する場合 - あなたは、SQL Serverの管理ツールを使用して作成したものを - そしてちょうど(通常は自分のweb.configファイルに)あなたのEntity Frameworkの接続文字列を確認してください(local)\SQLEXPRESSを使用しています接続文字列内にdata source=(またはserver=)パラメータを指定してください。

+0

これは私の問題でもありませんでしたが、以前の回答のように、私のプロジェクトでデータソースがどこからどこに届いているのかがわかりました。もう一度乾杯。 – Kezzla

0

ここにいくつかの良い提案が役立ちます。 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にテーブルをバウンスするために必要な、その後BindingSource.DataSource

これはあなたがSQLデータにアクセスできるようになりますをするDbSetを設定します。

新しいレコードを保存するには、エンティティフレームワークオブジェクトに.SaveChanges()メソッドを使用します。

他のnoobsへの私のアドバイスは、エンティティフレームワークがSQLテーブルにリンクされているが、データが自動的にリンクされているということではありません。データベース(およびオブジェクト)を更新するために、自分で情報をロードして保存する必要があります。

関連する問題