2010-02-12 87 views
1

最近我開始將ADO.net應用程序移植到實體框架。我的表中有一些可選的列。使用ADO.net,我只是檢查列的存在並獲取它的值。實體框架中的可選列

if (MyTable.Columns.Contains("PerformPreCheck") && 
    DBNull.Value != MyRow[MyTable.Columns["PerformPreCheck"]]) 
{ 
     m_bPerformPreCheck = (bool)MyRow[MyTable.Columns["PerformPreCheck"]]; 
} 

我怎樣才能做到與實體框架是一回事嗎?

謝謝 蘇雷什

回答

0

意味着你的實體被稱爲Foo和空列被稱爲PerformPreCheck

using(var context = new MyEntities()) 
{ 
    var f = context.Foos.First(); // or context.Foos.Where(foo => foo.Id == someId).First(), etc.... 
    m_bPerformPreCheck = f.PerformPreCheck.GetValueOrDefault(); 
} 
+0

嗨克雷格, 謝謝您的答覆。在我的實體模型中,我有「PerformPreCheck」檢查庫,但在我的客戶數據庫中沒有該列,因爲它是可選的。它在「var f = context.Foos.First()」中失敗。但是我上面給出的代碼ADO.net代碼完美地工作。我試圖找到它的等價物。 謝謝, Suresh – jaklucky 2010-02-12 20:25:15

+0

你不能有一個數據庫模式的變化,而不是一個實體模型。您必須保持數據庫模式和實體模型同步。 – 2010-02-12 20:44:28

+0

謝謝你的回覆。這可能會在現場發生。對我而言,這就像一個限制。我可以在ADO.net中做到這一點,沒問題。我很遺憾現在轉向實體框架。 – jaklucky 2010-02-12 21:16:26