我正在学习代码第一种方法。
我用:
创建了一个EbuyDataContext4.cs文件namespace Ebuy.Website.Models
{
public class EbuyDataContext4 : DbContext
{
public DbSet<Auction> Auctions { get; set; }
}
}
我用它根据模型创建和保存一个表单。
我有两个问题:
答案 0 :(得分:1)
当你从Scratch开始一个新项目时,首先使用代码的方法非常有用。
首先,数据将保存在与DataContext同名的数据库中,在您的情况下是EbuyDataContext4。 EF将从指定的模型创建整个数据库。
其次,当您采用Code-First的方式时,每次更新任何类模型时都必须在数据库中更新它,因此请将此代码放在App_Start下面:
的
的protected void Application_Start()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EbuyDataContext>());
}
的
希望对你有所帮助!并查看Entity Framework Code First以获取更多信息!
答案 1 :(得分:0)
1 - 默认情况下,Entity Framework在本地SQL Express实例上创建一个数据库,其名称/命名空间与dbcontext相同。
2 - 您应该查看代码优先迁移(http://msdn.microsoft.com/en-us/data/jj591621.aspx)这样您就可以在不重新创建模型的情况下更改模型。
答案 2 :(得分:0)
要了解保存数据的位置,请查看您的web.config。 首先看一下你正在使用的上下文,如果你没有指定你可能会使用DefaultConnection(在web.config中搜索这个字符串)。
实际上,如果您更改模型,那么您的应用程序将崩溃,因为它仍然针对未更新的数据库运行(不会反映您的更改)。
用于测试和开发(虽然不是生产;))
我建议您使用初始化程序,以确保初始数据和结构,同时您仍在摆弄它。
在项目的某处创建一个包含初始化代码的文件(只是示例标识符):
namespace DataAccess.DAL
{
using System.Collections.Generic;
using System.Data.Entity;
/// <summary>
/// This class initializes the ArticleContext's data every time something in the model (POCOs) changed
/// </summary>
public class Initializer : DropCreateDatabaseIfModelChanges<DbContext>
{
/// <summary>
/// Seeds the specified context.
/// </summary>
/// <param name="context">The context.</param>
protected override void Seed(DbContext context)
{
//place initializer code here
//var items = new List<Item);
//items .ForEach(a => context.Items.Add(a));
//context.SaveChanges();
}
}
}
您可能需要为项目添加一些引用... 然后在global.asax中连接初始化程序:
Database.SetInitializer<DbContext>(new Initializer());