我只是想知道是否有关于如何创建一个可更新模型的方式。现在,我必须为我的模型中的所有表创建用于插入,更新和删除的过程。这是非常乏味的,所以我想知道是否有一种方法可以解决这个问题?创建一个可更新模式 - 实体框架
我在以前,我们用来做模型,并不会产生程序访问它们(CRUD)工作记得以前。但我现在不确定它是如何制造的。
谢谢!
我只是想知道是否有关于如何创建一个可更新模型的方式。现在,我必须为我的模型中的所有表创建用于插入,更新和删除的过程。这是非常乏味的,所以我想知道是否有一种方法可以解决这个问题?创建一个可更新模式 - 实体框架
我在以前,我们用来做模型,并不会产生程序访问它们(CRUD)工作记得以前。但我现在不确定它是如何制造的。
谢谢!
有些情况下,你可以在实际的SQL调用的自动化(飞或在编译时已经生成)的生成到数据库中插入,选择,更新和实体框架内删除各种方式。
您可以使用ORM工具(例如Linq to Entities)来最小化或消除原始SQL的写入。这意味着您仍然必须在您的实体和其中的属性/方法上使用正确的属性,这是一个手动过程。 (一些背景this MSDN page)
您可以允许框架根据一些现有的数据库模式(仅适用于SqlServer类型的数据库)自动生成实体,它基本上为您完成90%的工作。在某些情况下,您可能需要重写,例如,默认情况下将自定义插入SQL。这是通过Generate Database Wizard(我认为它是Visual Studio 2008+的一部分)实现的。
您可以在EF中使用POCO
类。如果您使用4.1及以上版本,则可以使用DbContext
类。要将模型映射到表/列,只需在您的上下文类(从DbContext
继承)中覆盖OnModelCreating
即可。假设你有一个模型叫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();
}