LINQPad如何在编译时根据不同的连接调用不同的代码?

How to call different code based on different connections at compile time in LINQPad?

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

  1. LINQ 到 SQL
  2. 实体框架核心
  3. 其他或none

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

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

有办法吗?谢谢。

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

更新 正如所示,反射可以完美解决问题。

你有什么理由不想在运行时解决这个问题吗?

以下将起作用:

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