dotnetcore / FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, DuckDB orm, TDengine orm, QuestDB orm, MsAccess orm.
https://freesql.net
MIT License
4.13k stars 859 forks source link

DbContext 模式如何手動標記實體已經變更 #1893

Open sableangle opened 2 months ago

sableangle commented 2 months ago

在 EF Core 中,如果

public class Foo
{
    public List<string> contents { get; set;}
}

var foo = dbContext.Foo.First();

foo.contents.Add("some value");
dbContext.SaveChange(); // foo.contents 的異動不會被記錄,因為 EF Core 不會追蹤 IEnumerable 內的成員變動

// 此時會採用這種方式手動標記實體有異動,以令 SaveChange 可以順利保存差異
dbContext.Foo.Entry(foo).State = EntityState.Modified;

爬了一下文件與代碼沒有找到類似的實作,想確認目前的最佳實踐建議為何? 或是 FreeSQL.DbContext 的實作不需要執行類似的手動標記

2881099 commented 2 months ago

有需要,直接更新更直接。

我们主打的功能,IFreeSql + 仓储。

DbContext 适合过渡使用。