2014-03-24 94 views
2

我產生的LINQ -to從數據庫-entity模型和改進它的隱式引用轉換 - 我所做的接口:類型''不能用作泛型類型或方法''中的類型參數'T'。有一個從「」到「」

public interface IValid 
{ 
    byte Valid{ get; set; } 
} 

,並提出一些生成的類繼承這個接口。

我寫的泛型類從數據庫訪問表:

public List<T> GetValidRecords<T>() where T: class, IValid 
{ 
    try 
    { 
     return _context.Set<T>().Where(x => x.Valid == 1).ToList(); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(ex.Message); 
    } 
} 

當我在我的單元測試調用此方法

var records = repositary.GetValidRecords<tableName>(); 

我得到的錯誤 -

的類型'tableName'不能用作泛型類型或方法'GetValidRecords()'中的類型參數'T'。沒有從'tableName'到'IValid'的隱式引用轉換。

如何解決?

編輯: 我的表類:

public partial class tableName: IValid { 
    public byte IsValid { get; set; } 
} 

EDIT2: 我的調用方法:

public void GetValidRecordsGenericTest() 
{ 
    var data = new List<tableName> 
    { 
     new tableName() {Valid = 1}, 
     new tableName() {Valid = 1} 
    }.AsQueryable(); 

    var mockSet = new Mock<DbSet<tableName>>(); 
    mockSet.As<IQueryable<tableName>>().Setup(m => m.Provider).Returns(data.Provider); 
    mockSet.As<IQueryable<tableName>>().Setup(m => m.Expression).Returns(data.Expression); 
    mockSet.As<IQueryable<tableName>>().Setup(m => m.ElementType).Returns(data.ElementType); 
    mockSet.As<IQueryable<tableName>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());   var mockContext = new Mock<Entities>(); 
    mockContext.Setup(x => x.tableNames).Returns(mockSet.Object); 

    var database = new Database(mockContext.Object); 
    var records = database.GetValidRecords<tableName>(); // here I get error 

    Assert.AreEqual(2, records.Count, "Wrong number of gueltig records."); 
} 
+2

確保'tableName'是實現IValid的類型的名稱。 – helb

+0

@helb您應該將其作爲答案張貼,因爲這是答案。 :) – aevitas

+0

@helb我的表執行此接口 – Sasha

回答

2

tableName應該是這樣的,它的工作:

class tableName : IValid 
{ 
    // implement IValid 
} 

還請確保類tableName實現與方法中使用的相同的IValid接口,即來自正確名稱空間的IValid

+0

我有公共部分類tableName:IValid – Sasha

+0

@Sasha然後確保它是相同的IValid(您的項目中是否有其他IValid接口?) – helb

+0

是的,它只是與這樣的名稱的接口。可能是這個問題,這個表類是用Entity Framework生成的嗎? – Sasha

相關問題