如果从模型创建数据库,则需要先选择空模型。以下是创建数据库的其他步骤:
- 选择新连接
- 设置服务器名称:如果您安装了它,只需键入 . 选择默认值。你也可以试试(本地)
- 设置新的数据库名称
- 将 DDL 脚本复制到 SQL 服务器管理工作室的查询屏幕
- 运行脚本来创建你的数据库
运行脚本后,您将拥有初始表。配置文件将具有命名为容器名称的连接字符串。
现在,当您想切换到类似于带有 TT 文件的示例的代码生成时,您可以右键单击并添加代码生成。它将为实体模型创建部分类并为 dbcontext 创建一个文件。与此类似:
using System;
using System.Collections.Generic;
public partial class Contact
{
public int Id { get; set; }
public string Name { get; set; }
}
上下文将只有一张表。
public partial class PersonModelContainer : DbContext
{
public PersonModelContainer()
: base("name=PersonModelContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Contact> Contacts { get; set; }
}
你不需要TT模型。您可以直接添加这些文件。您需要一个从 DbContext 继承的上下文类和一个用于每种实体类型的分部类文件。如果您对模型进行更改,EF 会检测到这一点。您需要定义 Db 初始化程序。对于该网页上的示例演示,您可以将初始化程序添加到另一个方法。如果是 Web 项目,则将此 init 函数添加到 Global.asax->application_Start 以进行初始开发。初始化程序有不同的选项。我使用 drop 和 create 进行初始开发。
static void InitDbCheck()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PersonModelContainer>());
using (var db = new PersonModelContainer())
{
//accessing a record will trigger to check db.
int recordCount = db.Contacts.Count();
}
}
static void Main(string[] args)
{
using (var db = new PersonModelContainer())
{
// Save some data
db.Contacts.Add(new Contact { Name = "Bob" });
db.Contacts.Add(new Contact { Name = "Ted" });
db.Contacts.Add(new Contact { Name = "Jane" });
db.SaveChanges();
// Use LINQ to access data
var people = from p in db.Contacts
orderby p.Name
select p;
Console.WriteLine("All People:");
foreach (var person in people)
{
Console.WriteLine("- {0}", person.Name);
}
// Change someones name
db.Contacts.First().Name = "Janet";
db.SaveChanges();
}
}