如何在 asp.net 中创建分层结构

Posted

技术标签:

【中文标题】如何在 asp.net 中创建分层结构【英文标题】:How can i create layered struct in asp.net 【发布时间】:2017-08-22 10:30:04 【问题描述】:

我正在学习 C# 和 ASP.NET。

我正在尝试制作一个结构,我不知道它是否可以称为 ORM。

我有一个数据库(使用实体框架),我尝试将 SQL 查询与 aspx 的代码隐藏分开。

我的数据库中有 4 个表(Kitaplar、Musteriler、Kiralamalar、Turler) 在我的 Kitaplar 表中,我有 8 个字段(KitapID(FK)、KitapAdi、ISBN、Yayinevi、Yazaradi、Basimtarihi、Stok、TurTurID)。

我创建了一个类Kitapmodel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace KütüphaneYonetimSistemi.Models

    public class KitapModel
    
        public int KitapID  get; set; 
        public string KitapAdı  get; set; 
        public string ISBN  get; set; 
        public string Yayınevi  get; set; 
        public string YazarAdı  get; set; 
        public DateTime BasimTarihi  get; set; 
        public int Stok  get; set; 
        public int TurTurID  get; set; 
    

我还创建了kitapModelProvider.cs 用于数据库连接和其他事情此时我被卡住了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace KütüphaneYonetimSistemi.Providers

    public class kitapModelProvider
    
    



    public KitapModel getByKitapID(int ID)
    
        KutuphaneYonetimDB db = new KutuphaneYonetimDB();
        KitapModel bookListEF = from k in db.Kitaplar
                         join t in db.Turler
                         on k.TurTurID equals t.TurID
                         select new
                         
                             k.KitapAdı,
                             k.YazarAdı,
                             t.TurAdı,
                             k.Yayınevi,
                             BasimTarihi = k.BasimTarihi.ToString().Replace(" 12:00AM", "").Replace("Jan", "Ocak").Replace("Feb", "Şubat").Replace("Mar", "Mart").Replace("Jun", "Haziran").Replace("Sep", "Eylül").Replace("Nov", "Kasım").Replace("Oct", "Aralık").Replace("Apr","Nisan"),
                             k.ISBN,
                             k.Stok
                         ;
         return bookListEF;
    

    public void insertKitap(KitapModel kitap)
    
        KutuphaneYonetimDB db = new KutuphaneYonetimDB();
        db.Kitaplar.Add(kitap);
        db.SaveChanges();
    
    /*
        other methods
    */

在我的createBook.aspx.cs 文件中,我想做类似this 的事情;

KitapModel kitap = new Kitapmodel 
kitapAdi = "Harry Potter ve Felsefe Taşı",
ISBN = ......
Yayınevi....
...
Stok = 5,
TurTurID = 1 
kitapModelProvider.insertKitap(kitap) // or kitapModel.insertKitap

【问题讨论】:

听起来你的问题真的是“我如何使用实体框架?”具体来说,您似乎想使用实体框架构建存储库。有教程和示例可以帮助您入门。 我想你更想说我如何使用ORM,这与*** 无关。首先,您需要知道您将使用哪个 ORM ADO.NET - LINQ2SQL - EF 和其他......可用。选择一个并开始搜索它们及其 CRUD 操作,这将是一个好的开始。实体框架也不是数据库。这是一个 ORM。 我可以使用实体框架(或者我认为我可以),但我在代码隐藏中使用它,这是我不想要的。我可以填充实体框架数据库连接,但我不知道如何与我的类建立连接 @AhmetKarabulut 有很多 教程解释了如何使用 Entity Framework,包括 EF's own documentation 和 ASP.NET MVC tutorials 我想我不能清楚地说出我的问题,因为我的英语不好。我想知道如何制作分层结构。我不想学习如何使用 EF 【参考方案1】:

好的,既然您是 ASP.NET 编程的新手,我会尝试将您引向正确的道路。

首先什么是 ORM:

From wikipedia:

对象-关系映射(ORM、O/RM、 和 O/R 映射)在计算机软件中 是一种编程技术 在不兼容之间转换数据 关系数据库中的类型系统 和面向对象编程 语言。这实际上创造了一个 “虚拟对象数据库”可以 从编程中使用 语言。既有免费的,也有 可用的商业软件包 执行对象关系映射, 尽管有些程序员选择 创建自己的 ORM 工具。

它有利于抽象出数据存储(SQL 数据库/NoSQL 数据库等),以便提供可在您的代码中使用的接口。 .NET 中用于连接 SQL 的常用 ORM 有:

ADO.NET LINQ To SQL ADO.NET 实体框架

现在您已选择 EF(实体框架)作为对象关系映射 [ORM]。第二步是学习 EF 的基础知识,你可以找到 here。

EF 提供 2 种方法:

代码优先

您将在哪里提供 POCO 类及其映射,而 EF 将在 dbcontext 类的 OnBuildingMethod() 中为您创建表设计。

数据库优先

创建表格设计的传统方式,然后将数据库连接到应用程序并添加 ADO.NET Entity Data Model,然后使用它的向导调用所有表格并为您创建它们的 POCO。

在您了解了这些以及它是如何工作的之后,您需要了解EF CRUD Operations。

最后你可以开始使用 EF 查看Repository Pattern 和Unit of Work Pattern。

【讨论】:

感谢您的领导。我会看看这些链接。

以上是关于如何在 asp.net 中创建分层结构的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 中创建持久性 cookie?

如何在 asp.net 中创建 RESTful Web 服务?

如何在 ASP.Net 中创建必须是通用的数据访问层?

如何在 Web ASP.NET (.NET Framework) 中创建启动文件?

如何在asp.net c#中创建连接字符串

如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?