我有.net3.5 C#应用程序。
该应用程序使用EntityFramework作为其DB接口。
此应用程序调用c ++非托管dll,它也使用DB。这个DLL更新了数据库。
我希望能够回滚。我希望此操作包括主应用程序所做的更改以及dll所做的更改。
我该怎么办?我可以与dll共享相同的数据库连接吗?我可以与dll共享交易吗?
谢谢,
玛坦
答案 0 :(得分:0)
使用实体框架,您可以提供自己的SqlConnection
实例。然后,您可以使用此实例启动事务。这使您可以控制数据库连接,这是一个开始。
关于非托管代码,我建议您允许DLL中的入口点进入托管代码,以允许它在此SqlConnection
上执行SQL。
由于SqlConnection
类完全用托管代码编写,因此无法将实际连接句柄传递给非托管代码,并允许普通的非托管函数使用此连接。因为您以实体框架为起点,所以需要SqlConnection
,因此让DLL将SQL语句发送到托管连接可能是唯一的方法。