创建可更新模型 - 实体框架

时间:2012-07-09 05:02:08

标签: entity-framework model entity

我只是想知道如何创建一个可更新的模型。现在,我必须为我的模型中的所有表创建插入,更新和删除的过程。这非常乏味,所以我想知道是否有一种方法可以解决这个问题?

我之前在以前的工作中记得,我们曾经制作模型并访问它们(CRUD)而不创建程序。但我现在还不确定它是如何制作的。

谢谢!

2 个答案:

答案 0 :(得分:1)

有多种方法可以自动生成(动态或已经在编译时生成)对数据库的实际SQL调用,以在实体框架内插入,选择,更新和删除。

  1. 您可以使用ORM工具(例如Linq to Entities)来最小化或消除原始SQL的编写。这意味着您仍然必须在实体及其中的属性/方法中使用正确的属性,这是一个手动过程。 (关于this MSDN page

  2. 的一些背景知识
  3. 您可以允许框架根据某些现有的数据库模式自动生成您的实体(仅适用于SqlServer类型的数据库),这基本上可以为您完成90%的工作。在某些情况下,您可能需要覆盖,例如,使用自定义的默认插入SQL。这是通过Generate Database Wizard实现的(我认为它是Visual Studio 2008 +的一部分)。

答案 1 :(得分:0)

您可以在EF中使用POCO个班级。如果您使用的是4.1及更高版本,则可以使用DbContext类。要将模型映射到表/列,只需覆盖上下文类中的OnModelCreating(继承自DbContext)。假设您有一个名为User的模型,一个名为Users的表,以及一个上下文类MyContext,代码可以像这样:

public class User
{
  public int UserId { get; set; }
  public string UserName { get; set; }
}

public class MyContext : DbContext
{
  public MyContext() :
    base("MyContext")
  {
  }

  public DbSet<User> Users { get; set; }

  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {

    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<User>().
      .ToTable("Users");
    modelBuilder.Entity<User>().
      .Property(d => d.UserId)
      .HasColumnName("UserId")
    modelBuilder.Entity<User>().
      .Property(d => d.UserName)
      .HasColumnName("UserName");
  }    

}

要使用它,只需将User个实例添加到DbSet,然后拨打SaveChanges

using(MyContext ctx = new MyContext())
{
  var u = new User() { UserId = 1, UserName = "A" };
  ctx.Users.Add(u);
  ctx.SaveChanges();
}