2013-03-28 29 views
0

我仍然是編寫C#和SQL的初學者,並想知道是否有人可以幫助我解決這個基本問題。我已經看遍了所有的互聯網,我仍然陷入困境。使用WCF服務中的參數在數據庫中選擇表

我想寫一個WCF服務來訪問我的數據庫。我只需要一個方法:

public PathDto GetPath(string src, string trg) 
    { 
     using (var context = new PathsEntities()) 
     { 
      var p = (
        from a 
        in context.src 
        where a.Target = trg 
        select a).Distance, Path; 
     } 
    } 

其中參數src是表名,字符串trg是實體的主鍵。

Visual Studio給我的錯誤:... pathsService does not contain a definition for src,因爲它試圖查找表「src」,而不是變量中包含的字符串。

如何在查找語句中使用我的參數?

回答

1

我會假設你正在使用的DbContext EF5.0東西

public PathDto GetPath(string tableType, string id) 
{ 
    using (var context = new PathsEntities()) 
    { 
      var type = Type.GetType(tableType); 
      var p = context.Set(type).Find(id); 
      return (PathDto)p; 
    } 
} 

看來你不使用EF 5.0和現在只有EF 4.0和正在使用的ObjectContext。試試這個...不知道它是否工作,因爲我沒有真正使用EF 4.0。或者下載EF 5.0

public PathDto GetPath(string tableType, string id) 
{ 
    using (var context = new PathsEntities()) 
    { 
      var type = Type.GetType(tableType); 
      var p = context.GetObjectByKey(new EntityKey(tableType, "id", id)); 
      return (PathDto)p; 
    } 
} 
+0

謝謝。我現在正在爲context.Set()方法獲得「沒有定義」。這是因爲我錯過了一個框架?還是我需要自己聲明這個方法? – 2013-03-28 03:51:50

+0

我試圖實現EF4.0版本,但我真的不明白EntityKey的東西夠好。我已經安裝了EF6.0,Visual Studio仍然給我context.Set()的定義。我現在需要做什麼?另一種方式是執行(存儲)查詢嗎?謝謝 – 2013-04-03 11:04:14

+0

您將不得不使用DbContext EF而不是ObjectContext。你如何創建你的EF類?它是通過DBML xml設計器嗎?如果是這樣,您需要切換到DbContext生成器(EF> 4.3)而不是ObjectContext生成器(EF 4)。總之,你仍然使用EF 4.0 – Aron 2013-04-03 14:04:18