2015-05-12 62 views
1

首先,這裏是我想實現:數據綁定使用SQLite和Entity Framework

我想有一個觀點,如果任何控件的屬性的更改會自動將任何改變SQLite數據庫(簡單!)。

我的邏輯,這也可能是假的,由於缺乏經驗:

  1. 添加一個空的對象數據庫
  2. 獲取它的實例從上下文回
  3. 綁定這個實例控制(現在的簡單文本框)

我希望數據被推回到D B當我更新我的文本框但沒有任何反應。

這是我如何做到這一點:

代碼excerp:

AddBook(new Book()); // First, add empty object for referencing. 

Book book; 
using (var context = new MyDataContext()) 
{ 
    book = context.Books.OrderByDescending(x => x.BookId).FirstOrDefault();  
} 

SelectedBook = book; // My property is now set to the DB object. 

和綁定:

<TextBox Text="{Binding SelectedBook.BookName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

我缺少什麼?

回答

1

你缺少了很多:)

我相信你MyDataContext延伸的DbContext。 如果是這樣,DbContext應該是一個「工作單元」。 通常你:

  1. 從數據庫中獲取一些數據,並有EF暴露它們爲對象的集合
  2. 根據需要修改這個集合,添加,刪除和編輯對象
  3. 變更推到數據庫調用的SaveChanges
  4. 一個新

在您的樣品你儘快處置的的DbContext爲第1階段結束的處置和的DbContext重新開始。 EF不再跟蹤你的對象,所以它不知道你改變了什麼,並且什麼都不會推到數據庫。

在評論你說「我的財產現在設置爲DB對象」。 不是。它被設置爲一個由EF初始化的對象,但EF在您處理DbContext時「忘了它」。該對象仍然存在,因爲您仍然使用「book」變量引用它。

+0

如何將更新的對象正確地推回到數據庫中? – eYe

+0

DbContext.SaveChanges – corradolab

相關問題