2011-03-04 12 views
6

मैं LINQ के साथ एक भंडार मजाक के लिए MOG उपयोग कर रहा हूँ इस तरह SQL करने के लिए:मजाक भंडार

public static IProductsRepository MockProductsRepository(params Product[] prods){ 
    // Generate an implementer of IProductsRepository at runtime using Moq 
    var mockProductsRepos = new Mock<IProductsRepository>(); 
    mockProductsRepos.Setup(x => x.Products).Returns(prods.AsQueryable()); 
    return mockProductsRepos.Object; 
} 

public interface IProductsRepository{ 
    IQueryable<Product> Products { get; } 
    void SaveProduct(Product product); 
    void DeleteProduct(Product product); 
} 

मैं कैसे इकाई की रूपरेखा के लिए इस समारोह को बदलने अगर मैं इसे इस तरह उपयोग कर रहा हूँ कर सकते हैं:

public interface IProductsRepository : IEntities{ 
    EntityState GetEntryState(object entry); 
    void SetEntryState(object entry, EntityState state); 
    void Commit(); 
} 

public interface IEntities{ 
    DbSet<Product> Products { get; set; } 
} 

अब मैं DbSet का उपयोग कर रहा हूं।

उत्तर

2

खैर, IProductsRepository औजार जब से तुम वहाँ में एक

public DbSet<Product> Products { get; set; } 

संपत्ति होनी चाहिए IEntities, लेकिन मैं क्या होगा तब

public interface IProductsRepository : IEntities 
{ 
    EntityState GetEntryState(object entry); 
    void SetEntryState(object entry, EntityState state); 
    void Commit(); 

    // New method 
    IQueryable<Product> FetchAll(); 
} 

तरह IProductRepository करने के लिए एक Fetch विधि जोड़ है, अपने MockProductsRepository में निम्नानुसार सेटअप लाइन बदलें:

mockProductsRepos.Setup(x => x.FetchAll()).Returns(prods.AsQueryable()); 
,210
संबंधित मुद्दे