问。例如,是否可以在 Visual Studio 中轻松创建强类型数据层,自动处理插入/更新/删除等操作?
Entity Framework 听起来像是您正在寻找的东西。当然,其中涉及一些设置。对于大多数 Web 项目,Entity Framework 是自动添加的,如果没有,您可以随时通过 NuGet 包管理器添加它。
EntityFramework 通过 DbContext 对象将您的模型绑定到数据库,如果您的模型不存在,Code First 甚至会生成一个数据库(如果确实存在并且模型更改,您可能必须迁移:@987654321 @)。我将采用这种方法(您可以稍后将以下代码更改为与实时数据库的连接字符串)。
首先,您需要告诉您的应用程序使用什么数据库(无论它是否存在),这可以在 Web.Config 文件中完成(不是唯一的方法)。
Web.Config
<configuration>
....
<connectionStrings>
<add name="ConnectionStringName" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DATABASENAME.mdf;Initial Catalog=DATABASENAME;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
注意 - 此连接字符串仅适用于 VS2015。对于以前的版本,请使用:
Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\DATABASENAME.mdf
More reading on configuring Entity Framework
现在,我们可以使用“ConnectionStringName”来连接我们的上下文。
Context 类必须继承自 DbContext 对象,我们将把这个连接字符串名称传递给基本构造函数(DbContext 存在于 System.Data.Entity 命名空间中)。我将使用两个看起来相同的通用模型(ModelA ModelB)--
模型A和模型B
using System.ComponentModels.DataAnnotations;
public class ModelA
{
public int Id { get; set; }
[Required(ErrorMessage="You need to enter a name!")]
[StringLength(40)]
public string Name { get; set; }
}
注意 - 我正在使用 DataAnnotations (Required, StringLength) - 这些真的很酷,在你的模型上实现 CRUD 操作时非常有用。
ALSO -- Entity Framework 将自动将名为:Id(或任何大小写形式)或 ModelNameId 的属性设为主键。有一些方法可以覆盖它。
More reading on DataAnnotations
您甚至可以在创建模型时考虑到关系。如果 ModelA 和 ModelB 会有一对多的关系,可以在代码中体现这种关系:
public virtual ICollection<ModelB> ModelBs {get; set;}
More reading on creating relationships
我们现在将使用 DbSet 集合将您的模型映射到表。看起来是这样的:
using System.Data.Entity;
using YourProject.Data.Models;
namespace YourProject.Data.DAL
{
public class YourContext : DbContext
{
public YourContext() : base("ConnectionStringName")
{
}
public DbSet<ModelA> ModelAs { get; set; }
public DbSet<ModelB> ModelBs { get; set; }
}
}
Database Initialization Strategies - 用于为您的数据库播种创建数据。
More reading on configuring the context
我永远无法详细说明您可以做的所有事情 - 但这里有一些简短的示例:
问。这一切有什么用?
您现在有一个强类型对象连接到您的数据库。就像创建一个新的 Context 对象一样简单:
YourContext yourContext = new YourContext();
检索整个表很简单:
IEnumerable<ModelA> modelAs = yourContext.ModelAs;
或按 Id 查找一行
ModelB modelB = yourContext.ModelBs.Find(id);
假设您抓取了 modelB 并想要更新它。很简单:
modelB.Name = "Here's the new name";
yourContext.Entry(modelB).State = EntityState.Modified;
yourContext.SaveChanges();
添加:
yourContext.ModelAs.Add(newModel);
删除:
yourContext.ModelBs.Remove(modelB);
记住 添加/更新/删除方法都需要调用 SaveChanges();从上下文。否则将被丢弃。
当然,这可能是可用的 Entity Framework 最基本的概要。要查看更多实际操作,请查看以下教程:
WebForms with Entity Framework - Wingtip Toys
MVC with Entity Framework - Contoso University
希望这可能对某人有所帮助。