我一直在玩弄這個想法幾天,但我找不到任何明確的證據表明這將會或不會工作。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