gpt4 book ai didi

c# - 在 Entity Framework 中从 DbContext 生成数据脚本

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:38 24 4
gpt4 key购买 nike

我正在研究 Entity Framework ,并希望在即将保存更改时从 DbContext 对象生成和插入/更新/删除脚本。截至目前,我只能使用以下代码片段从上下文中获取 DDL 脚本。

string str = ((IObjectContextAdapter)_objDataContext).ObjectContext.CreateDatabaseScript();

有没有办法为所有更改生成脚本?

最佳答案

在调用 SaveChanges() 方法之前,没有任何内置方法可以为更改生成 DML 脚本,但是可以在插入/更新/删除命令时拦截它们在调用 SaveChanges() 后发送到数据库。

EF 6 为此类场景引入了两个扩展点。

可以将 _objDataContext.Database.Log 属性设置为 TextWriter,其中将记录上下文发出的所有 SQL 命令。

另一种选择是实现拦截器,EF 在即将执行命令时或命令执行后调用该拦截器。拦截器允许您记录正在发送的 SQL 命令,甚至提供一种抑制命令执行的方法。

要创建拦截器,您需要编写一个实现 IDbCommandInterceptor 接口(interface)的类,并在 Entity Framework 中注册此类。

DbInterception.Add(new MyInterceptor());

有关更多详细信息,您可以查看 sample implementation on MSDN .


旧版本 Entty Framework 的解决方案可能是围绕当前数据库提供程序的包装提供程序。

关于c# - 在 Entity Framework 中从 DbContext 生成数据脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com