2015-01-16 35 views
1

我的實體有一個名爲Value的字段。該字段是string,但它也保存了intDateTime值。EF6 LINQ鑄柱

我經常查詢是一樣的東西

SELECT * FROM tableA 
WHERE [email protected] and CAST(value as int/datetime/varchar)[email protected] 

我怎樣才能讓EF生成一個鑄件的查詢?

編輯:創建建議對uservoice

+0

你能說你應該如何基於'entityType'來施放價值嗎? –

+0

@teovankot entityType是告訴我是否應該轉換爲int,datetime或varchar的另一個字段... ID = 1表示int,2表示日期時間和0字符串... – Leonardo

+0

您應該絕對以相反方式執行此操作:cast '@價值'到所需的類型。在比較數據庫字段之前對數據庫字段應用功能會損害索引。 –

回答

-1

它被執行並由EF團隊完成。檢查問題中列出的用戶發票鏈接

-1

這裏是例子:

 int eId = 1; 
     int valueInt = 1; 
     DateTime valueDateTime = DateTime.Now; 
     string valueString = "Test"; 

     TableA result; 
     switch (eId) 
     { 
      case 1: result = context.tableA.Where(x => x.entityType == eId && Convert.ToInt32(x.value) == valueInt); break; 
      case 2: result = context.tableA.Where(x => x.entityType == eId && Convert.ToDateTime(x.value) == valueDateTime); break; 
      case 3: result = context.tableA.Where(x => x.entityType == eId && x.value == valueString); break; 
     } 
+0

你甚至測試之前發佈它作爲答案? – Leonardo

+0

不,但linq可以將轉換函數轉換爲sql的方式 –

+0

真的嗎?你能指出任何支持這種說法的來源嗎?我一直在尋找很長一段時間...迄今爲止沒有運氣... – Leonardo