2013-11-27 65 views
0

我想添加一個通用的插入方法使用GetTable()與我的存儲庫模式與EntityFramework(希望我有模式的權利)使用GetTable()給出的錯誤'類型T必須是引用類型'

但是我收到下面的註釋中顯示的錯誤。

其實我是想在數據庫中插入記錄,而不管該表 任何幫助非常感謝:)

這是我BaseRepository通用類

public abstract class BaseRepository<T> 
{ 
    private static DBEntities dbEntities; 

    public BaseRepository() 
    { 
     dbEntities = new DBEntities(); 
    } 
    public IQueryable GetTable<T>(T entity) where T : class 
    { 
    return dbEntities.CreateObjectSet<T>(); 
    } 

public void Insert<T>(T obj) 
{ 
    //the line below gives an error 'The Type T must be a reference type 
    // in order to use it as parameter T. I HAVE tried adding ref here 
    // and in GetTable method, but same error 
    var table = GetTable(obj);   
    int saveChanges = dbEntities.SaveChanges(); 

} 

}

+1

1)如果該類具有泛型pe參數,您不應該在方法上重複該參數。 2)'T:class'約束需要在'BaseRepository '上,而不是在方法上。 – CodesInChaos

+0

「我已經嘗試過在這裏添加引用」,這意味着引用*類型*和引用*參數*之間的混淆,可以通過詳細閱讀[參數傳入C#](http://www.yoda .arachsys.com/csharp/parameters.html) – AakashM

回答

1

嘗試的類型更改您的代碼:

public abstract class BaseRepository<T> where T : class 
{ 
    private static DBEntities dbEntities; 

    public BaseRepository() 
    { 
     dbEntities = new DBEntities(); 
    } 
    public IQueryable GetTable(T entity) 
    { 
     return dbEntities.CreateObjectSet<T>(); 
    } 

    public void Insert(T obj) 
    { 
     //the line below gives an error 'The Type T must be a reference type 
     // in order to use it as parameter T. I HAVE tried adding ref here 
     // and in GetTable method, but same error 
     var table = GetTable(obj);   
     int saveChanges = dbEntities.SaveChanges();  
    } 
} 
+0

這工作。我不應該在方法名稱旁邊放置< T >:D thx –

相關問題