在不使用LINQ或其他ORM的情況下使用Repository模式是否有意義?我在MONO中編寫應用程序並使用MySQL,正在考慮使用repositoy模式,但無法處理IQueryable。我正在考慮在存儲庫中公開更多方法,以明確在數據庫調用時將在db側進行過濾。任何建議,如果這是對設計或任何其他設計理念的有效使用,而不是?沒有LINQ或其他ORM的存儲庫模式?
3
A
回答
3
版本庫與IQueryable完全沒有關係。你在想的是Rob Conory .net 3.5採用的存儲庫模式,實際上它更像是數據代理模式。
存儲庫負責返回對象,並負責處理數據訪問,以便應用程序的其餘部分可以不知道它。
你可以看到Martin Fowlers網站
0
這是絕對有可能的一個非常高的水平的描述。但是您應該將查詢移動到存儲庫網站併爲每個類實施一個存儲庫。例如:
public abstract class GenericRepository : IRepository {
public virtual T Get<T>(Identity id) where T : PersistentDocument {
using (IDbConnection connection = GetConnection())
using(IDbCommand command = CreateGetCommand(id, connection)) {
using (IDataReader reader = command.ExecuteReader()) {
var mapper = DaHelper.GetMapper<T>();
return mapper.Map(reader);
}
}
}
protected virtual IDbCommand CreateGetCommand(Identity id, IDbConnection connection) {
IDbCommand command = connection.CreateCommand();
command.CommandText = String.Format("SELECT * FROM {0} e WHERE e.id = ?", TableName);
command.Parameters.Add(id.ToGuid());
return command;
}
protected abstract string TableName { get; }
}
public class UserRepository: GenericRepository<User>, IUserRepository
{
protected override string TableName { get { return "users"; } }
public User GetByEmail(string email)
{
using (IDbConnection connection = GetConnection())
using (IDbCommand command = connection.CreateCommand())
{
command.CommandText = String.Format("SELECT * FROM {0} e WHERE e.email = ?", TableName);
command.Parameters.Add(email);
using (var reader = command.ExecuteReader())
return DaHelper.GetMapper<T>().Map(reader);
}
}
}
0
當然。存儲庫只是linq使用的一種模式。您可以通過它提供您想要的任何類型的數據訪問。我工作的一個項目使用處理強類型DataSet的存儲庫。
相關問題
- 1. 存儲庫模式和DAL沒有存儲庫模式的DAL中的區別?
- 2. 與其他項目(.NET)共享我的存儲庫(存儲庫模式)?
- 3. 從沒有存儲庫模式Silverlight OData
- 4. 存儲庫模式和Linq到sql
- 5. LINQ to SQL和存儲庫模式
- 6. 有或沒有存儲庫的NHibernate
- 7. Enum,PList或其他存儲?
- 8. 其中哪些是存儲庫模式?
- 9. 存儲庫模式繼續 - 類方法或存儲庫方法?
- 10. sharpSVN連接到一些存儲庫和其他沒有
- 11. 存儲庫模式 - POCO或IQueryable?
- 12. 存儲庫模式
- 13. Linq to SQL使用存儲庫模式:對象沒有支持轉換到SQL
- 14. DDD存儲庫對其他存儲庫的瞭解
- 15. 觀察者模式或其他模式
- 16. 有沒有辦法克隆包括其遠程存儲庫的git存儲庫?
- 17. 存儲庫模式 - 緩存
- 18. c#存儲庫模式:每個子類有一個存儲庫?
- 19. LINQ,存儲庫模式和數據庫抽象
- 20. 存儲庫模式 - 可以存儲庫包含除核心以外的其他邏輯CRUD
- 21. 使用存儲過程與Linq到Sql有其他參數
- 22. 存儲庫模式和存儲過程
- 23. 存儲用戶消息的最佳方式:MySQL數據庫或其他地方?
- 24. 一個是否通過存儲庫/服務/其他存儲XML/CSV /其他
- 25. 一個使用存儲庫模式的Linq To SQL的DataContext
- 26. 阿帕奇ModRewrite模式沒有存儲
- 27. 有沒有C庫的存儲庫?
- 28. C#Linq-SQL:用於存儲庫模式的UpdateByID方法
- 29. Linq to SQL的存儲庫模式:多對多關係
- 30. 的LINQ to SQL存儲庫模式和字符串ID
你對所有這些都是正確的。我指的是Robs post,已經發布了所有的地方,只是想知道是否要在db中進行過濾,並返回這個模式的有效用法,儘管這並不理想。 – CSharpAtl 2009-01-15 13:27:33