本文共 5586 字,大约阅读时间需要 18 分钟。
目录
Devart的Entity Developer是一个非常强大的建模和代码生成工具,更精确地说是一个ORM工具。Entity Developer使您可以一目了然地可视化设计数据访问层。由于Devart生成的数据访问层包含自动生成的代码,因此出错的可能性很小。
Entity Developer的官方网站指出:“Entity Developer可以在一个统一的界面中帮助您设计各种.NET ORM的模型。您可以在一个工具中获得对所有ORM的支持,也可以购买单独的版本,并使用其中的一种支持的ORM。”
参考:
Entity Developer支持ADO.NET实体框架,实体框架核心(EF Core),Hibernate,LinqConnect,Telerik数据访问和LINQ to SQL。它使用数据库优先方法,并说明如何与ORM设计器和代码生成工具一起使用。本文讨论了如何与Entity Developer一起在ASP.NET Core 3.1中构建RESTful服务。
为了能够使用本文中演示的代码示例,您应该在系统中安装以下组件:
您可以从此下载.NET Core 3.1 。
您可以从此下载Visual Studio 2019 。
您可以从此下载SQL Server 2019 Developer Edition 。
您还应该下载并还原AdventureWorks数据库,这是系统中在线事务处理(OLTP)的Microsoft产品示例。您可以从此下载系统中的AdventureWorks数据库副本。
假设您的计算机上已经安装了必要的软件,以便可以与Entity Developer一起使用,请按照下面概述的步骤创建一个新的ASP.NET Core Web API项目。
在本节中,我们将探索如何使用Entity Developer创建实体数据模型。要在Visual Studio 2019中使用Entity Developer创建实体数据模型,请遵循以下概述的步骤:
1、在“解决方案资源管理器”窗口中右键单击项目
2、选择添加 -> 新项目
图1
这将启动“Entity Developer:创建模型向导”窗口,如下所示:
图2
这是您应该指定应如何创建模型的方式。有两个选项:“数据库优先”(默认情况下处于选中状态)和“模型优先”。在此示例中,我们将利用“数据库优先”方法。
3、单击“下一步”按钮继续。
4、在下一个截图中,指定连接属性,然后单击“下一步”按钮继续。
图3
在下一个截图中,您应该指定模型应包含的内容。缺省情况下,“从数据库生成”选项处于选中状态,如下图所示:
图4
5、由于我们需要从数据库中创建模型,因此单击“下一步”按钮继续。
在下一个截图中,Entity Developer运行时将检索数据库元数据,这是选择数据库对象的方式。
图5
6、取消选择所有选项,然后仅指定要成为模型一部分的数据库对象。为了简单起见,我们仅选择Person和EmailAddress表。
图6
7、在“设置命名规则”截图中,您可以为实体指定命名规则。
图7
8、由于我们不会在此处进行任何更改,因此请单击“下一步”按钮继续。
接下来显示的截图是“模型属性”,如下图所示:
图8
9、将上下文命名空间指定为“AdventureWorksModel”,然后单击“下一步”按钮继续。在下一个截图中,您可以指定模型图应包含的内容。
图9
请注意,将显示我们之前选择的两个数据库对象,并且默认情况下会选择“所有实体”单选按钮。
10、由于我们此处将不会进行任何更改,因此请单击“下一步”按钮继续。在下一个截图中,您可以根据需要选择代码生成模板。
图10
11、由于这里我们将不做任何修改,因此请单击“下一步”按钮继续。
12、在下一个截图中,单击“下一步”按钮继续。
图11
13、单击“完成”以完成该过程。
使用Entity Developer的ADO.NET实体数据模型已创建。实体数据模型如下所示:
图12
到目前为止,一切都很好。现在已经创建了Web API项目和实体数据模型,下一步是创建将用于与实体数据模型进行交互的API控制器。为此,请按照以下概述的步骤操作:
1、在解决方案资源管理器窗口中选择项目
图13
2、右键单击并选择添加 -> 控制器
3、在“添加新脚手架项目”窗口中,选择“具有读/写操作的API控制器”作为模板
图14
4、点击添加在下一个截图中,指定控制器的名称。让我们将控制器命名为DefaultController。
5、单击添加以创建控制器并将其添加到您的项目中
在下面的部分中,我们将使用此控制器来编写操作方法。
在本节中,我们将研究如何使用在上一节中创建的实体数据模型从数据库AdventureWorks读取数据。
创建一个使用以下代码命名的IAdvantureWorksRepository接口:
public interface IAdventureWorksRepository{ PersonDTO GetPerson(int personId);}
创建一个名为PersonDTO的新类,并在其中添加以下代码:
public class PersonDTO { public string FirstName { get; set; } public string LastName { get; set; } public string EmailAddress { get; set; } }
创建一个内部包含以下内容的AdventureWorksRepository类:
public class AdventureWorksRepository: IAdventureWorksRepository { public PersonDTO GetPersonById(int personId) { using(AdventureWorksModel dbContext = new AdventureWorksModel()) { var query = from p in dbContext.People join e in dbContext.EmailAddresses on p.BusinessEntityID equals e.BusinessEntityID where p.BusinessEntityID == personId select new PersonDTO { FirstName= p.FirstName, LastName= p.LastName, EmailAddress = e.EmailAddress1 }; return query.SingleOrDefault(); } } }
AdventureWorksRepository类扩展IAdventureWorksRepository接口并实现GetPersonById方法。该GetPersonById方法返回PersonDTO的实例。
以下代码段显示了如何在Startup类的ConfigureServices方法中添加我们作为范围服务创建的服务AdventureWorksRepository。
public void ConfigureServices(IServiceCollection services){ services.AddScoped(typeof(IAdventureWorksRepository), typeof(AdventureWorksRepository)); services.AddControllers();}
现在,我们可以利用控制器中的依赖项注入,如下面的代码片段所示:
public class DefaultController : ControllerBase{ private readonly IAdventureWorksRepository _adventureWorksRepository; public DefaultController(IAdventureWorksRepository adventureWorksRepository) { _adventureWorksRepository = adventureWorksRepository; } //Action methods}
以下代码段显示了如何编写一个操作方法,该方法接受业务实体ID作为参数,然后调用AdventureWorksRepository的GetPersonById方法。
[HttpGet("{id}", Name = "Get")]public string Get(int id){ var person = _adventureWorksRepository.GetPerson(id); return JsonConvert.SerializeObject(person);}
下面的代码清单是该DefaultController类的完整代码,供您参考。
[Route("api/[controller]")][ApiController]public class DefaultController : ControllerBase{ private readonly IAdventureWorksRepository _adventureWorksRepository; public DefaultController(IAdventureWorksRepository adventureWorksRepository) { _adventureWorksRepository = adventureWorksRepository; } [HttpGet] public string Get() { return "Demonstrating Entity Developer"; } [HttpGet("{id}", Name = "Get")] public string Get(int id) { var person = _adventureWorksRepository.GetPersonById(id); return JsonConvert.SerializeObject(person); }}
当您执行应用程序并点击Get(int id)端点时,输出如下:
图15
来自Devart的Entity Developer帮助您提高开发人员的工作效率——它支持使用ADO.NET Entity Framework,Entity Framework Core,Hibernate,LinqConnect,Telerik Data Access和LINQ to SQL。Entity Developer也内置于Devart ADO.NET数据提供程序中——这是链接:。
从以下位置下载试用版后,您可以开始使用Entity Developer:。
转载地址:http://wdwhj.baihongyu.com/