我对MVC4 ASP.NET和内存数据库非常了解。如果我的答案太基础和愚蠢,我道歉。 我创建了一个ASP.net MVC应用程序,它使用
使用内存数据库(SQLite3)SQLiteConnection con=new SQLiteConnection(Data Source=:memory:;Version=3;New=True;);
我想知道如果创建了数据库及其表" in-memory",那么将如何生成模型及其类,以便我可以在Controller / Views中使用它。在内存数据库中将在运行时从某些XML填充。
修改
以下是如何在内存中创建表
using (SQLiteConnection connection = new SQLiteConnection("Data Source=:memory:;"))
{
connection.Open();
connection.CreateModule(new SQLiteModuleEnumerable("sampleModule", new string[] { "one", "two", "three" }));
using (SQLiteCommand command = connection.CreateCommand())
{
command.CommandText ="CREATE VIRTUAL TABLE t1 USING sampleModule;";
command.ExecuteNonQuery();
}
using (SQLiteCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT * FROM t1;";
using (SQLiteDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
Console.WriteLine(dataReader[0].ToString());
}
}
connection.Close();
}
这是C#SQLite库:http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
答案 0 :(得分:0)
解决此问题的低技术方法是不生成模型类。只需手动创建它们,即可与您希望在视图中处理的数据库部分相对应。请记住,模型主要用于视图的使用 - 它们应该强调控制器需要传递给视图的那些事物,并且视图需要传递回控制器。如果他们恰好反映了数据库结构,那就是奖金。
可能有一些更复杂的做事方式,但我还没有使用它们。您可以创建实体框架代码优先模型,并使用数据库迁移来实际创建内存中的表。您可能会变得懒惰并使用与传递给视图的模型完全相同的类。
更好的做法是让实体框架类担心实体框架,让模型类担心视图。然后使用AutoMapper之类的工具在传递给视图的模型和传递给数据库的实体框架类之间复制数据。