之前用netcore搭建了一個小項目,資料庫操作用的是要手寫sql語句的connection和command,一直想調個EFCore或者類似SOA那樣的框架 今天看到了DotNet公眾號提到的.NET Core新型ORM,於是興起打算試試如何去使用 其推文轉自 cnblogs.com/kellyni ...
之前用netcore搭建了一個小項目,資料庫操作用的是要手寫sql語句的connection和command,一直想調個EFCore或者類似SOA那樣的框架
今天看到了DotNet公眾號提到的.NET Core新型ORM,於是興起打算試試如何去使用
其推文轉自
cnblogs.com/kellynic/p/10645049.html
1. 要搭建context,則自然需要繼承自框架的DbContext
先新增Nuget包——FreeSql,但是要註意的是FreeSql.DbContext並不是在原始包中,而是一個拓展的類
故還需要在Nuget控制台輸入命令:dotnet add 項目名 package FreeSql.DbContext將拓展包安裝好
然後就與EF那樣重寫配置方法
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var _fsql = new FreeSqlBuilder()
.UseConnectionString(dataType, OACommon.DatabaseHepler.ConnectionString)
.Build();
optionsBuilder.UseFreeSql(_fsql);
}
2. 定義DbSet變數,註意:實體類名稱要與資料庫表名稱保持一致
3. 一開始我以為還需要向EF那樣定義map,可是當我直接調用DbSet變數,發現竟可以獲取到表數據,猜測應該是通過實體名稱反射得到的表名
using (var db = new OAModels.FreeSqlManager.FSqlContext())
{
var users = db.user_info.Select.ToList();
}
4. 至此,FreeSql的context算是搭建完成,但遇到兩個問題:
1)是否可以使用linq操作?稍微試了一下,不行,後續再看看有沒有什麼辦法
2)聯表查詢LeftJoin,得到的實體還是調用了select的那個實體,即沒有另一個表的數據,如何得到另一個表中想要的數據呢?
越努力越幸運,努力需要自製,希望自己能夠有更強的自製力!感恩自信自律!