如何使用实体框架SqlQuery<>在运行时知道实体类型时

时间:2014-07-22 18:39:54

标签: c# entity-framework sql-server-2008

我正在开展ASP.NET Web Forms项目。由于项目的具体细节,大多数数据都在XML个文件中,当我从某个视图返回数据时,我只有string我正在使用的实体类型的值。或者为了更清楚,我返回json我有类似{entity : "Clients"}的地方,这是我知道我现在正在与Clients合作的唯一途径。

所以我们仍然试着坚持Entity Framework 5所以我们存储数据库查询的XML文件,但问题是当我想执行时:

        using(var db = new MyContext())
        {
            var allRecords = db.Database.SqlQuery<???>("SELECT * FROM Clients");

我没有类型作为真实类型来提供SqlQuery方法。所以我认为我可以考虑的选项是:

  • 使用类来匹配数据 - 这个问题最常见的答案,但就我而言,广泛使用XML文件将毫无意义。
  • 使用某种反射将我的字符串值强制转换为实际的实体类型,因为我将它们放在POCOs中(我正在使用DataBase first方法)。我看到了一些关于如何最终实现这一目标的指示here但是说实话,这对我来说非常复杂,我甚至不确定这是否适用于那种特殊情况,但如果你认为这是一个很好的方法请提一下。
  • 我想知道我是否可以某种方式使用dynamic SqlQuery<dynamic> - 它正确地返回数据库中的所有记录但我无法从中提取任何数据。我想用动态我仍然需要在某些时候投射结果。不确定,也许有人知道吗?
  • 最后。我们真的想使用Entity Framework,但这只是项目尝试的开始阶段,看看事情是如何协同工作的,我开始认为Entity Framework可能不是正确的工具这个情况。我得到了这个简短的回答here,这让我想到如果有更好的方法,我是否应该努力扭转一些东西。

0 个答案:

没有答案