内存数据库 - 如何生成 MVC 模型 类?
In-Memory Database - How to Generate MVC Model classes?
我对 MVC4 ASP.NET 和内存数据库非常陌生。如果我的回答过于基础和愚蠢,我深表歉意。
我创建了一个 ASP.net MVC 应用程序,它使用
使用内存中的 DB(SQLite3)
SQLiteConnection con=new SQLiteConnection(Data Source=:memory:;Version=3;New=True;);
我想知道如果数据库及其 table 已创建 "in-memory",那么模型及其 类 将如何生成以便我可以在 Controller/Views。 In Memory 数据库将在运行时从某些 XML.
填充
编辑
下面是如何在内存中创建 table
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
解决这个问题的低技术方法是不生成模型类。只需手动创建它们以对应于您希望在视图中处理的数据库部分。请记住,模型主要用于视图的使用——它们应该强调控制器需要传递给视图的那些东西,以及视图需要传递回控制器的那些东西。如果他们碰巧反映了数据库结构,那就是一个奖励。
可能有一些更复杂的处理方式,但我没有使用过。您可以创建一个 Entity Framework Code First 模型,并使用数据库迁移来实际创建您的内存表。您可能会变得懒惰,并使用与传递给视图的模型完全相同的 类。
最好让 Entity Framework 类 担心 Entity Framework,让模型 类 担心视图。然后使用像 AutoMapper 这样的工具在传递给视图的模型和传递给数据库的 entity framework 类 之间复制数据。
我对 MVC4 ASP.NET 和内存数据库非常陌生。如果我的回答过于基础和愚蠢,我深表歉意。 我创建了一个 ASP.net MVC 应用程序,它使用
使用内存中的 DB(SQLite3)SQLiteConnection con=new SQLiteConnection(Data Source=:memory:;Version=3;New=True;);
我想知道如果数据库及其 table 已创建 "in-memory",那么模型及其 类 将如何生成以便我可以在 Controller/Views。 In Memory 数据库将在运行时从某些 XML.
填充编辑
下面是如何在内存中创建 table
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
解决这个问题的低技术方法是不生成模型类。只需手动创建它们以对应于您希望在视图中处理的数据库部分。请记住,模型主要用于视图的使用——它们应该强调控制器需要传递给视图的那些东西,以及视图需要传递回控制器的那些东西。如果他们碰巧反映了数据库结构,那就是一个奖励。
可能有一些更复杂的处理方式,但我没有使用过。您可以创建一个 Entity Framework Code First 模型,并使用数据库迁移来实际创建您的内存表。您可能会变得懒惰,并使用与传递给视图的模型完全相同的 类。
最好让 Entity Framework 类 担心 Entity Framework,让模型 类 担心视图。然后使用像 AutoMapper 这样的工具在传递给视图的模型和传递给数据库的 entity framework 类 之间复制数据。