【问题标题】:How to call different code based on different connections at compile time in LINQPad?如何在LINQPad编译时根据不同的连接调用不同的代码?
【发布时间】:2020-11-17 19:23:41
【问题描述】:

在 LINQPad 中,与数据库的连接可以是任意一种

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

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

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

有没有办法做到这一点?谢谢。

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

更新 正如Joe's answer 所示,反射可以完美地解决问题。

【问题讨论】:

    标签: c# compilation linqpad


    【解决方案1】:

    您是否有任何理由不想在运行时解决此问题?

    以下将起作用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2013-05-12
      相关资源
      最近更新 更多