我正在尝试学习ASP.NET MVC。对于我的基本问题,我事先表示歉意。
我在尝试使用模型类创建数据库时遇到问题。
这是我到目前为止所做的
我在“模型”文件夹下创建了一个模型类,如下所示
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace ScripterEngine.Models
{
public class Campaign
{
public int id { get; set; }
public string name { get; set; }
public string layout { get; set; }
public string call_list_connection { get; set; }
public string call_list_table_name { get; set; }
public string status { get; set; }
public string intro_url { get; set; }
public string use_transfer { get; set; }
public string route_callback_to { get; set; }
public string call_list_database_name { get; set; }
public DateTime created_at { get; set; }
public DateTime modified_at { get; set; }
//Initilize the default value
public Campaign()
{
status = "Active";
use_transfer = "No";
route_callback_to = "Self";
}
}
}
然后,在新创建的名为“ DataAccessLayer”的文件夹中创建了Campaign Context类,如下所示
using ScripterEngine.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace ScripterEngine.DataAccessLayer
{
public class CampaignContext : DbContext
{
public DbSet<Campaign> Campaign { get; set; }
public CampaignContext() : base("con1")
{
}
}
}
然后,在新创建的名为“ Seeders”的文件夹中创建了一个初始化器类,以将虚拟数据添加到表中,如下所示
using ScripterEngine.Models;
using ScripterEngine.DataAccessLayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ScripterEngine.Seeders
{
public class CampaignSeeder : System.Data.Entity.DropCreateDatabaseIfModelChanges<CampaignContext>
{
protected override void Seed(CampaignContext context)
{
var campaigns = new List<Campaign>
{
new Campaign
{
id = 1,
name = "Ahold Landline",
layout = "topmenu",
call_list_table_name = "foo",
call_list_database_name = "bar",
},
new Campaign
{
id = 2,
name = "Ahold Cellphone",
layout = "topmenu",
call_list_table_name = "foo",
call_list_database_name = "bar",
}
};
foreach (var campaign in campaigns)
{
context.Campaign.Add(campaign);
}
context.SaveChanges();
}
}
}
最后,我在Web.config中添加了连接字符串和contaxt块
//I want the database table to be in the App_Data folder
<connectionStrings>
<add name="con1" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=dbtest;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\dbtest.mdf" providerName="System.Data.SqlClient"/>
</connectionStrings>
和conext块
<contexts>
<context type="ScripterEngine.DataAccessLayer.CampaignContext" disableDatabaseInitialization="false">
<databaseInitializer type="ScripterEngine.Seeders.CampaignSeeder" />
</context>
</contexts>
但是表没有被创建?我需要触发一些东西来生成表格吗?我无法创建表格在做什么呢?
此外,我试图了解组织应用程序的正确方法。为每个模型都有一个单独的上下文类是正确的还是为每个模型都应该有一个上下文类?换句话说,上下文类应该代表表还是数据库本身?
谢谢
您可以使用程序包管理控制台执行以下命令:
enable-migrations
add-migration Initial
update-database
这将启用代码优先方法的迁移。然后创建数据库脚本以基于dbcontext设置数据库。然后根据先前创建的迁移脚本更新数据库(并运行种子)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句