2

的ObjectSet.Single(謂語)不工作(在Where()和toList()方法爲好),除非我把它寫這種方式:ObjectSet.AddObject(T)的問題?

ObjectSet.Cast<TEntity>().Single<TEntity>(predicate) 

但我不知道該怎麼做使用AddObject和DeleteObject方法解決問題:

public void Add<TEntity>(TEntity entity) 
    { 
     ObjectSet.AddObject(entity); 
    } 

錯誤消息告訴我「實體」是一個錯誤的參數。問題與EF 4.1有關嗎?

+0

你能展示一個正在使用的代碼的例子嗎?我想知道你在傳遞什麼,因爲謂詞對於理解問題很重要。 –

+0

我還沒有通過任何謂詞。寫完後,該方法加下劃線。 – Rahma

回答

2

下面是我的通用信息庫中的一些片段:

public void Add<K>(K entity) where K : class 
{    
    context.CreateObjectSet<K>().AddObject(entity); 
} 

public K SingleOrDefault<K>(Expression<Func<K, bool>> predicate) where K : class 
{ 
    K entity = context.CreateObjectSet<K>().SingleOrDefault<K>(predicate); 

    return entity; 
} 

請參閱下面的鏈接: http://msdn.microsoft.com/en-us/library/dd382944.aspx

編輯:如果你已經有一個創建的對象集,然後你的類已經定義TEntity ,因此你的方法應該如此調整:

public void Add(TEntity entity) 
{ 
    ObjectSet.AddObject(entity); 
} 

你s也可以對Single()方法進行類似的調整,不需要進行強制轉換。

+0

我的ObjectSet已經創建。 – Rahma

+1

瞭解,請將您的Add方法調整爲使用類模板定義的TEntity。在方法名稱後面不需要。 – e36M3

+0

非常感謝:)它的工作! – Rahma