1

誰か助けてくれませんか?

私は全くの初心者です。でも、ネットで調べました。VBで示されている例はどこにもありません。

win フォームを保持するテスト プロジェクトを作成しました。次に、エンティティ モデルを保持する別のプロジェクトを追加しました。モデルを構築した後、これの参照を Win フォーム プロジェクトに追加しました。その後、Model オブジェクトをデータソースとして追加しました。

データソース コントロールをフォームにドラッグし、以下のコードを追加しました。

Private context As TestModelEntities

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    context = New TestModelEntities

    Dim query = context.employees
    EmployeeBindingSource.DataSource = query.ToList




End Sub

Private Sub DepartmentBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmployeeBindingNavigatorSaveItem.Click



    Try
        context.SaveChanges()
        MessageBox.Show("Changes saved to the database.")
        Me.Refresh()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

私は一日中頭をかきむしっています。私が間違っていることを知りません。

4

2 に答える 2

0

あなたの質問に少し混乱していますが、役立つヒントがいくつかあるかもしれません。まず、@Philip Tennが述べたように、作成しているものをコンテキストに追加する必要があります。vb.net ではとても簡単です。次のように書くだけです。

Context.Table.Add(Object2Add)。

これにより、オブジェクトがそのデータ テーブルに配置されます。クエリを実行するときは、次のように言う必要があります。

MyQuery を IEnumerable(of DataTable) = (From a in Context.DataTable).ToList として Dim します。

これにより、そのデータ テーブルからすべてが取得され、リストに格納されます。コードで発生する可能性のある問題の 1 つは、コンテキストを各サブ内で個別に (Dim Context を新しい TestModelEntity として)、またはグローバルに (Public Context を新しい testModelEntity として (これはサブルーチンの外にあります)) 宣言する必要があることです。私は数年遅れていることを知っていますが、これが誰かの助けになることを願っています!

于 2016-08-18T14:27:22.573 に答える
0

メソッドでは、を呼び出す前に にDepartmentBindingNavigatorSaveItem_Click何も追加していないようです。contextcontext.SaveChanges()

したがって、Entity Framework は新しく追加されたエンティティを認識せず、それらを永続化していません。

エンティティをコンテキストに追加してから、 を呼び出してみてくださいcontext.SaveChanges()

アップデート

コンテキストへのエンティティの追加/添付に関する MSDN の記事: Entity Framework の追加/添付とエンティティの状態

Employee残念ながら、それは C# です( DepartmentVB.NETで翻訳または同等の記事を見つけることができませんでした) が、SaveChanges().

于 2013-04-02T00:25:20.970 に答える