在软件开发过程中,数据访问层的代码往往是重复且繁琐的。为了提高开发效率,减少重复劳动,可以使用实体框架(Entity Framework)代码生成器来自动生成数据层类。本文将介绍如何使用这种工具来连接SQL Server数据库,并生成基本的数据层类,以便在项目中实现和使用。
首先,需要建立与SQL Server的连接。这通常涉及到配置数据库连接字符串,以及确保数据库服务器可以被应用程序访问。
string connectionString = "Data Source=服务器地址;Initial Catalog=数据库名;User ID=用户名;Password=密码";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 连接成功
}
在建立了数据库连接之后,接下来就可以使用代码生成器了。需要输入一些与项目相关的变量,选择一个表,指定主键列,以及排序方式,然后点击“生成类”按钮。
生成器会根据选择的表或视图,生成一些默认的方法。例如,如果表中包含“DELETED”、“CREATED”、“UPDATED”(它们都是datetime类型)这样的列,生成器会决定需要生成哪些代码。
对于表,生成器可能会生成以下方法:
对于视图,生成器可能会生成以下方法:
除了基本的代码生成功能,还有一些附加选项:
一旦将生成的类集成到EF项目中,就可以像下面这样使用它们了。
// 获取所有VEREIN对象的列表
List<VEREIN> lst = EF.Verein.GetList();
// 获取一个特定的VEREIN对象
Guid id = new Guid("7125A5EA-25EA-4C3F-A123-415506246359");
VEREIN verein = EF.Verein.GetByID(id);
生成的类将需要DatabaseException类,可以在需要时填充事件。生成的异常类如下:
using System;
using System.Runtime.Serialization;
[Serializable]
public class DatabaseException : Exception
{
public DatabaseException(string message) : base(message) { }
public DatabaseException(string message, Exception innerException) : base(message, innerException) { }
public DatabaseException(string format, params object[] args) : base(string.Format(format, args)) { }
protected DatabaseException(SerializationInfo info, StreamingContext ctxt) : base(info, ctxt) { }
}
对于MVC(ASP.NET MVC)项目,生成的代码将返回一个填充了所有VEREIN记录(ID和名称)的MVC List<SelectListItem>,用于组合框。
using System;
using System.Collections.Generic;
using System.Linq;
using TestProject.Models;
using System.Web.Mvc;
public static List<SelectListItem> GetList()
{
try
{
List<SelectListItem> sellist = new List<SelectListItem>();
using (EFDataClassGeneratorEntities model = new EFDataClassGeneratorEntities())
{
var list = model.VEREIN.OrderBy(w => w.VEREIN_NAME).ToList();
foreach (VEREIN item in list)
{
sellist.Add(new SelectListItem { Value = item.VEREIN_ID.ToString(), Text = item.VEREIN_NAME });
}
return sellist;
}
}
catch (Exception ex)
{
throw new DatabaseException("A database exception occurred", ex);
}
}
不是企业级开发者,别人的代码总是有这样那样的问题。可以将这个示例作为灵感,随意修改源代码,编辑模板文件,做想做的任何事情。但请不要批评编码方式。任何其他反馈都非常欢迎。