我正在尋找一些幫助或指針,解釋更多關於使用T4模板生成整個數據訪問層的信息。例如所有的INSERT等語句和實現它的C#方法。使用t4模板生成數據訪問層
回答
你不應該那樣做,而應該嘗試使用Generic Repository模式,最終只需使用一個單一的接口和一個使用泛型的實現,它可以用於模型中的任何類型。
public interface IRepository<T, K> where T : class
{
T Add(T item);
bool Update(T item);
bool DeleteById(K id);
}
實施
public class EFRepository<T, K> : IRepository<T, K>, IDisposable where T : class
{
protected readonly DbContext _dbContext;
private readonly DbSet<T> _entitySet;
public EFRepository(DbContext context)
{
_dbContext = context;
_entitySet = _dbContext.Set<T>();
}
public T Add(T item)
{
item = _entitySet.Add(item);
_dbContext.SaveChanges();
return item;
}
public bool Update(T item)
{
_entitySet.Attach(item);
_dbContext.Entry(item).State = EntityState.Modified;
_dbContext.SaveChanges();
return true;
}
public bool DeleteById(K id)
{
var item = _entitySet.Find(id);
_entitySet.Remove(item);
_dbContext.SaveChanges();
return true;
}
}
用這種「存儲庫」結構包裝EF是沒用的。該功能已由'DbSet'和'DbContext'提供。 – Stijn
@Haitham Shaddad我會用同樣的詞語:「你不應該這樣做」。http://rob.conery.io/2014/03/04/repositories-and-unitofwork-are-not-a-good-idea/ –
@Stijn該功能存在於DbSet中,但不能直接在域服務或UI層中使用它,如果要刪除EntityFramework並使用另一個數據訪問層,則不能在沒有重構的情況下進行 –
- 1. 使用T4模板生成ViewModels
- 2. 使用模板生成.xaml和.xaml.cs T4
- 3. 生成類使用T4模板
- 4. 使用T4模板生成代碼
- 5. 訪問T4模板編程
- 6. 用新名稱生成T4模板庫
- 7. 用於生成類型化數據集的T4模板
- 8. 使用模板模式創建數據訪問層
- 9. 如何訪問ASP.NET MVC 3 T4模板中的視圖生成器參數?
- 10. 生成T4模板爲公開
- 11. T4模板 - 適合生成C++代碼?
- 12. T4模板和EF與代碼生成
- 13. 處理T4模板時訪問HttpContext
- 14. 如何在T4模板中訪問Entiydatamodel
- 15. 使用t4模板在運行時生成內存中的SQL
- 16. 使用t4模板生成動態代碼
- 17. 如何使用Fluent Hibernate從T4模板生成LINQ2SQL類
- 18. 添加自定義T4模板DDL生成模板DROPDOWNLIST
- 19. 使用T4模板ENum的
- 20. T4模板和使用Server.Mappath
- 21. T4模板生成從數據庫派生的GUI(aspx)的第一個剪輯?
- 22. T4模板新手問題
- 23. T4模板LINQ問題
- 24. 通用多層數據訪問模式?
- 25. SubSonic 3.0.0.3大型數據庫上的t4模板生成用完了連接
- 26. 從t4腳手架模板訪問我的模型中的元數據(dataannotations)
- 27. Django訪問模板數據
- 28. T4生成器問題
- 29. T4模板中的數據表
- 30. 是否有可用於從xsd生成c#類的T4模板?
爲什麼要生成數據訪問層。 @Marco Munnik – zahed
任何你不想使用EF的理由?那麼你不需要這個或者存儲庫模式,因爲EF已經在實施存儲庫模式/工作單元。 –