日期:2014-05-20  浏览次数:20954 次

entity framework 能否动态构造查询语句中的表名?
var query=from b in db.Book select b;
我想问一下,查询的表能不能动态啊?就是 db.Book 能不能动态生成啊?要如何动态啊?麻烦各位高手来指点下啊

------解决方案--------------------
没试过。

不过个人认为,类SQL语言的方式不好实现,扩展方法的方式可以。
------解决方案--------------------
ObjectContext.CreateQuery<T> 

http://msdn.microsoft.com/en-us/library/bb339670.aspx#Y400
------解决方案--------------------
先坦白我没试过。不过,用Entity SQL应该是可以的。Entity SQL是EF的原生query language, LINQ to Entities是后来由于LINQ的成熟后加上去的。Entity SQL本身就是个string, 类似数据库SQL语句。所以,我认为在运行时动态构造Entity SQL语句,并通过EF的Entity Client层返回数据是可行的。
------解决方案--------------------
不可以。

db.Book 实际上是 Visual Studio 根据数据库表结构自动生成的一个从 DataContext 继承的类。

你可以在 edmx 对应的源代码文件中找到。

也就是 EF 并不能在运行时构造实体对象。
------解决方案--------------------
怎么动态 ,...反射 ?
var query = (IEnumerable<object>)db.GetType().GetProperty("Book").GetValue(db, null);