我開始使用實體框架4,並創建演示應用程序作爲學習練習。該應用程序是一個簡單的文檔生成器,它使用SQL CE存儲。每個文檔項目都有自己的SQL CE數據文件,用戶可以打開其中一個文件來處理項目。使用實體框架在運行時打開SQL CE文件4
EDM非常簡單。文檔項目由一系列主題組成,每個主題都有一個標題,一個描述以及零個或多個註釋。所以,我的實體是包含標題和文本屬性的主題,以及具有標題和文本屬性的註釋。從主題到註釋之間存在一對多關聯。
我想弄清楚如何打開一個SQL CE數據文件。數據文件必須與由EF4的創建數據庫嚮導創建的SQL CE數據庫的模式相匹配,並且我將在應用程序的其他地方實施新文件用例來實現該要求。現在,我只是試圖在應用程序中打開現有的數據文件。
我已經在下面複製了我現有的「打開文件」代碼。我已將其設置爲靜態服務類,名爲文件服務。代碼還沒有正常工作,但足以顯示我正在嘗試做什麼。我試圖保持ObjectContext爲實體對象更新而打開,在文件關閉時進行處理。
所以,這是我的問題:我在正確的軌道上?我需要改變這個代碼以適應EF4嗎?有沒有一個如何正確地做到這一點的例子?
感謝您的幫助。
我的現有代碼:
public static class FileServices
{
#region Private Fields
// Member variables
private static EntityConnection m_EntityConnection;
private static ObjectContext m_ObjectContext;
#endregion
#region Service Methods
/// <summary>
/// Opens an SQL CE database file.
/// </summary>
/// <param name="filePath">The path to the SQL CE file to open.</param>
/// <param name="viewModel">The main window view model.</param>
public static void OpenSqlCeFile(string filePath, MainWindowViewModel viewModel)
{
// Configure an SQL CE connection string
var sqlCeConnectionString = string.Format("Data Source={0}", filePath);
// Configure an EDM connection string
var builder = new EntityConnectionStringBuilder();
builder.Metadata = "res://*/EF4Model.csdl|res://*/EF4Model.ssdl|res://*/EF4Model.msl";
builder.Provider = "System.Data.SqlServerCe";
builder.ProviderConnectionString = sqlCeConnectionString;
var entityConnectionString = builder.ToString();
// Connect to the model
m_EntityConnection = new EntityConnection(entityConnectionString);
m_EntityConnection.Open();
// Create an object context
m_ObjectContext = new Model1Container();
// Get all Subject data
IQueryable<Subject> subjects = from s in Subjects orderby s.Title select s;
// Set view model data property
viewModel.Subjects = new ObservableCollection<Subject>(subjects);
}
/// <summary>
/// Closes an SQL CE database file.
/// </summary>
public static void CloseSqlCeFile()
{
m_EntityConnection.Close();
m_ObjectContext.Dispose();
}
#endregion
}
你有沒有實現新的文件用例? – pomeroy 2011-02-07 21:47:27