我一直在玩弄这个想法几天,但我找不到任何明确的证据表明这将会或不会工作。LinqPad + EF 4.1 + SQL Server CE
我想要做的就是使用LinqPad查询在与查询相同的目录(可能与查询命名相同)中创建一个带有SQL Server CE支持的EF 4.1代码优先数据库。原因是为了快速建立一个数据库来存储查询结果以便进一步处理。
的想法是存储在查询中的类定义,即(这些将与最新的测试查询工作
public class User
{
public long Id { get; set; }
public string Name{ get; set; }
}
public class MyDBContext : DbContext
{
// note the overloaded constructor
// just pass in the LinqPad UserQuery connection
public MyDBContext(DbConnection connection) : base(connection, true)
{}
public DbSet<User> Users { get; set; }
}
然后:
#define NONEST
public Main()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDBContext>());
// pass in the current database connection to point EF to the right database
var context = new MyDBContext(this.Connection);
context.Users.Add(new User(){Name = "Test User"});
context.SaveChanges();
context.Users.Dump("Contents of Users table");
}
我引用的EntityFramework 4.2 .0.0在LinqPad中,但在我的查询中,我看不到System.Data.Entity
命名空间。这是否表示有其他问题?
我不确定是否给出了enoug h环境或信息,所以让我知道你是否需要澄清。这可以做到吗? LinqPad不支持这个吗?
更新:
看来,EF不能映射嵌套类,这正是LinqPad查询中定义的类。我在这方面并不是很有经验,但似乎我已经陷入死胡同。除非Joe Albahari能够以某种方式实现非嵌套用户类,否则它看起来不会起作用。任何人有想法?
最后更新:
使用latest beta,这全部工作。它需要事先创建.sdf
数据库文件,但所有其他操作都应该可以工作。很酷。感谢Joe Albahari!
我仍然不确定发生了什么,但我能够解决EF DLL和命名空间问题。我目前正致力于让查询级别类被EF Code-First成功使用。 – llaughlin 2012-01-05 02:07:16
我即将做一个可以让你定义非内置类的构建。敬请期待... – 2012-01-05 09:46:07