在LINQPad中,如何在编译时基于不同的连接调用不同的代码



在LINQPad中,到数据库的连接可以是

  1. LINQ to SQL
  2. 实体框架核心
  3. 其他或无

下面是我喜欢写的一些代码,它根据不同的连接保存数据。但是预定义的符号不存在。

#if LINQ2SQL
SubmitChanges();
#elif EFCORE
SaveChanges();
#else
; //None
#endif

有办法做到这一点吗?谢谢

(反射在这里不起作用,因为这需要在编译时决定。(

更新正如Joe的回答所示,反思可以完美地解决问题。

是否有任何原因不想在运行时解决此问题?

以下将起作用:

if (GetType().GetProperty ("ChangeTracker") != null)
((dynamic)this).SaveChanges();     // EF Core
else if (GetType().GetProperty ("Mapping") != null)
((dynamic)this).SubmitChanges();   // LINQ to SQL

相关内容

最新更新