好的,所以我已经研究了c#和asp.net,并且想知道我创建的所有这些自定义类如何与数据库相关。例如。
我有一个班级电话员工
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string EmailAddress { get; set; }
}
我有一个包含以下4个字段的数据库:
ID
Name
EmailAddress
PhoneNumber
似乎自定义类是我的数据库。在asp.net中,我可以简单地在我的数据库上运行LINQ to SQL命令并获取我的类的整个模式,而无需键入带有getter和setter的自定义类。
所以,让我们说现在我正在运行查询以检索员工列表。我想知道我的应用程序如何映射到我的Employee类到我的数据库?
答案 0 :(得分:1)
本身,它没有。但是添加任何ORM或类似的东西,你就会越来越近了。例如,LINQ-to-SQL(我提到它因为很容易使用Visual Studio),你通常会得到(由工具给你)一个自定义的“数据上下文”类,你用它作为:
using(var ctx = new MyDatabase()) {
foreach(var emp in ctx.Employees) {
....
}
}
这是生成TSQL并自动将数据映射到对象。默认情况下,工具会创建一个单独的Employee类,但您可以通过部分类调整它。这也支持插入,数据更改和删除。
还有一些工具可以重复使用现有的域对象;任何一种方法都可以成功 - 每种方法都有优点和缺点。
如果您只想阅读数据,那就更容易了;微型ORM(如dapper-dot-net)允许您使用我们编写的TSQL类型,并处理繁琐的物化代码。
答案 1 :(得分:0)
如果没有ORM tool,您的类无法直接映射到数据库,ORM工具将读取您的配置,并根据您的映射自动将您的类映射到数据库行。
这意味着您没有需要读取行并显式设置类字段,但是你必须提供映射文件并且必须通过ORM框架来加载实体,框架将负责其余的事项
您可以在nHibernate上查看nHibernate和getting started。
答案 2 :(得分:0)
你的问题有点模糊,imo。但你所指的是MVC(Model-View-Controller)架构的模型。
Model,您的员工类,管理应用程序的数据。因此,它不仅可以获取和设置(保存/更新)您的数据,还可以用于通知数据更改。 (通常是视图)。
您提到了使用SQL的地方,因此您可以通过发送表数据的关联数组来创建并保存整个员工记录,以便将其保存到数据库中。您对Class的设置将处理INSERT数据的唯一SQL语法。在更大的MVC框架中。应用程序的模型继承了其他几个类来处理除MS SQL之外的不同类型后端的正确保存。
模型通常还具有处理查找记录和更新记录的功能。这通常是通过指定一个搜索字段,并返回记录,其中包含ID,您通常会将其重新设置为保存/更新功能以对记录进行更改。您还可以绑定到此级别的模型以创建要保存的数据的修订
那么模型如何直接与您的SQL结构相关联取决于您的权利。或者您决定使用哪个框架。我相信asp.net的常见问题是微软的ASP.Net MVC