Hoạt động CRUD với ASP.NET MVC và Fluent Nhibernate


Lý Nghị Lực
5 năm trước
Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 3598

Trước đây, tôi đã viết một bài về Bắt đầu với  các hoạt động Nhibernate và ASP.NET MVCTHERCRUD . Đây là một trong những bài đăng blog phổ biến nhất trên blog của tôi. Tôi nhận được rất nhiều câu hỏi qua email và phương tiện khác tại sao bạn không viết một bài về Fluent Nhibernate và ASP.NET MVC. Vì vậy, tôi nghĩ rằng nó sẽ là một ý tưởng tốt để viết một bài đăng blog về nó.

Thông thạo Nhibernate là gì:

Đối lưu về cấu hình là thần chú của Fluent Hibernate Nếu bạn đã xem bài đăng trên blog của tôi về Nhibernate thì bạn có thể thấy rằng chúng ta cần tạo ánh xạ xml vào bảng ánh xạ. Fluent Nhibernate sử dụng ánh xạ POCO thay vì ánh xạ XML và tôi tin tưởng chắc chắn vào Convection trên cấu hình, đó là lý do tại sao tôi thích Fluent Nhibernate rất nhiều. Nhưng đó là vấn đề của Thử nghiệm cá nhân và không có lý lẽ mạnh mẽ tại sao bạn nên sử dụng Fluent Nhibernate thay vì Nhibernate.

Fluent Nhibernate là nhóm gồm các thành viên của James Gregory, Paul Batum, Andrew Stewart và Hudson Akridge. Có rất nhiều ủy viên và đó là một dự án nguồn mở.

Bạn có thể tìm thấy tất cả các thông tin về tại trang web sau đây.

http://www.fluentnhibernate.org/

Trên trang web này, bạn có thể tìm thấy định nghĩa về Fluent Nhibernate như dưới đây.

Thông thạo, không có XML, biên dịch các ánh xạ dựa trên quy ước, an toàn, tự động cho NHibernate. Hãy thông thạo.

Họ có hướng dẫn bắt đầu tuyệt vời về url sau. Bạn có thể dễ dàng đi qua nó và học nó.
https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started

ASP.NET MVC và Fluent Nhibernate:

Vì vậy, tất cả đã đặt thời gian để viết một ứng dụng mẫu. Vì vậy, từ visual studio 2013 đi đến tập tin - Dự án mới và thêm một dự án ứng dụng web mới với ASP.NET MVC. Khi bạn đã hoàn thành việc tạo một dự án web với ASP.NET MVC Đã đến lúc thêm Fluent Nhibernate vào Ứng dụng. Bạn có thể thêm Fluent Nhibernate vào ứng dụng thông qua Gói NuGet sau. Và bạn có thể cài đặt nó với bảng điều khiển quản lý gói như sau. Bây giờ chúng ta đã hoàn thành việc thêm Fluent Nhibernate vào thời điểm đó để thêm cơ sở dữ liệu mới. Bây giờ tôi sẽ tạo một bảng đơn giản có tên là Employeeee với bốn cột Id, FirstName, LastName và Designation. Sau đây là một kịch bản cho điều đó.

















CREATE TABLE [dbo].[Employee]
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [FirstName] NVARCHAR(50) NULL, 
    [LastName] NVARCHAR(50) NULL, 
    [Designation] NVARCHAR(50) NULL
)

Bây giờ bảng đã sẵn sàng, đã đến lúc tạo một lớp Model cho nhân viên. Vì vậy, sau đây là một mã cho điều đó.

namespace FluentNhibernateMVC.Models
{
    public class Employee
    {
        public virtual int EmployeeId { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string  Designation{ get; set; }
    }
}

Bây giờ Một khi chúng ta đã hoàn thành các lớp mô hình và các thứ khác, bây giờ là lúc tạo một lớp Map để ánh xạ lớp mô hình của chúng ta vào bảng cơ sở dữ liệu của chúng ta vì chúng ta biết rằng Fluent Nhibernate đang sử dụng các lớp POCO để ánh xạ thay vì ánh xạ xml. Sau đây là một lớp bản đồ cho điều đó.

using FluentNHibernate.Mapping;
 
namespace FluentNhibernateMVC.Models
{
    public class EmployeeMap : ClassMap<Employee>
    {
        public EmployeeMap()
        {
            Id(x => x.EmployeeId);
            Map(x => x.FirstName);
            Map(x => x.LastName);
            Map(x => x.Designation);
            Table("Employee");
        }
    }
}

Nếu bạn nhìn thấy lớp Bản đồ nhân viên một cách cẩn thận, bạn sẽ thấy rằng tôi đã ánh xạ cột Id với EmployeeId trong bảng và một số thứ khác bạn có thể thấy tôi đã viết một bảng với Cảnh sát nhân viên sẽ ánh xạ lớp Nhân viên với lớp nhân viên.

Bây giờ khi chúng ta đã hoàn thành với lớp ánh xạ của mình, bây giờ là lúc thêm Trình trợ giúp Nhibernate sẽ kết nối với cơ sở dữ liệu SQL Server.

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
 
namespace FluentNhibernateMVC.Models
{
    public class NHibernateHelper
    {
        public static ISession OpenSession()
        {
            ISessionFactory sessionFactory = Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008
                  .ConnectionString(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\data\Blog\Samples\FluentNhibernateMVC\FluentNhibernateMVC\FluentNhibernateMVC\App_Data\FNhibernateDemo.mdf;Integrated Security=True") 
                              .ShowSql()
                )
               .Mappings(m =>
                          m.FluentMappings
                              .AddFromAssemblyOf<Employee>())
                .ExposeConfiguration(cfg => new SchemaExport(cfg)
                                                .Create(false, false))
                .BuildSessionFactory();
            return sessionFactory.OpenSession();
        }
    }
}

Bây giờ chúng ta đã hoàn thành với các lớp Đã đến lúc dàn dựng Bộ điều khiển của chúng ta cho ứng dụng. Nhấp chuột phải vào thư mục Bộ điều khiển và nhấp vào thêm bộ điều khiển mới. Nó sẽ yêu cầu các mặt hàng giàn giáo như sau. Tôi đã chọn bộ điều khiển MVC5 với hành động đọc / ghi. Khi bạn nhấp vào Thêm, nó sẽ hỏi tên bộ điều khiển. Bây giờ bộ điều khiển của chúng tôi đã sẵn sàng. Đã đến lúc viết mã cho các hành động của chúng tôi. Liệt kê: Sau đây là một mã cho hành động liệt kê của chúng tôi.











public ActionResult Index()
{
    using (ISession session = NHibernateHelper.OpenSession())
    {
        var employees = session.Query<Employee>().ToList();
        return View(employees);
    }
}

Bạn thêm chế độ xem cho danh sách thông qua nhấp chuột phải vào Xem và Thêm Chế độ xem. Đó là bạn đã hoàn thành với danh sách cơ sở dữ liệu của bạn. Tôi đã thêm một vài bản ghi vào bảng cơ sở dữ liệu để xem nó có hoạt động hay không. Sau đây là một đầu ra như mong đợi. Tạo: Bây giờ là lúc tạo mã và lượt xem để tạo Nhân viên. Sau đây là một mã cho kết quả hành động.









public ActionResult Create()
{
    return View();
}
 
// POST: Employee/Create
[HttpPost]
public ActionResult Create(Employee employee)
{
    try
    {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Save(employee);
                transaction.Commit();
            }
        }
 
        return RedirectToAction("Index");
    }
    catch (Exception exception)
    {
        return View();
    }
}

Tại đây, bạn có thể thấy một nếu hành động trống và một hành động khác để đăng dữ liệu và lưu vào SQL Server với Thuộc tính httpPost. Bạn có thể thêm chế độ xem để tạo thông qua nhấp chuột phải vào chế độ xem kết quả hành động như sau. Bây giờ khi bạn chạy này, bạn sẽ nhận được đầu ra như mong đợi. Khi bạn nhấp vào tạo, nó sẽ trở lại màn hình danh sách như thế này. Chỉnh sửa: Bây giờ chúng tôi đã hoàn tất việc liệt kê / thêm nhân viên, đã đến lúc viết mã để chỉnh sửa / cập nhật nhân viên. Sau đây là một mã Phương thức hành động.













public ActionResult Edit(int id)
{
    using (ISession session = NHibernateHelper.OpenSession())
    {
        var employee = session.Get<Employee>(id);
        return View(employee);
    }
}
 
// POST: Employee/Edit/5
[HttpPost]
public ActionResult Edit(int id, Employee employee)
{
    try
    {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            var employeetoUpdate = session.Get<Employee>(id);
 
            employeetoUpdate.Designation = employee.Designation;
            employeetoUpdate.FirstName = employee.FirstName;
            employeetoUpdate.LastName = employee.LastName;
 
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Save(employeetoUpdate);
                transaction.Commit();
            }
        }
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Bạn có thể tạo chế độ xem chỉnh sửa thông qua việc theo dõi qua nhấp chuột phải vào chế độ xem. Bây giờ khi bạn chạy ứng dụng, nó sẽ hoạt động như mong đợi. Chi tiết: Bạn có thể viết mã chi tiết như sau.









public ActionResult Details(int id)
{
    using (ISession session = NHibernateHelper.OpenSession())
    {
        var employee = session.Get<Employee>(id);
        return View(employee);
    }
}

Bạn có thể xem qua nhấp chuột phải vào xem như sau. Bây giờ khi bạn chạy ứng dụng sau đây là một đầu ra như mong đợi. Xóa: Sau đây là mã để xóa Nhân viên một phương thức hành động để xác nhận xóa và một phương pháp khác để xóa dữ liệu khỏi bảng nhân viên.









public ActionResult Delete(int id)
{
    using (ISession session = NHibernateHelper.OpenSession())
    {
        var employee = session.Get<Employee>(id);
        return View(employee);
    }
}
 
[HttpPost]
public ActionResult Delete(int id, Employee employee)
{
    try
    {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Delete(employee);
                transaction.Commit();
            }
        }
        return RedirectToAction("Index");
    }
    catch (Exception exception)
    {
        return View();
    }
}

Bạn có thể thêm chế độ xem để xóa thông qua nhấp chuột phải vào chế độ xem như sau. Khi bạn chạy, nó chạy như mong đợi. Một khi bạn nhấp vào xóa nó sẽ xóa nhân viên. Đó là nó. Bạn có thể thấy nó rất dễ dàng. Fluent Nhibernate hỗ trợ ánh xạ POCO mà không cần viết bất kỳ ánh xạ xml phức tạp nào. Bạn có thể tìm thấy toàn bộ mã nguồn tại GitHub tại vị trí sau. https://github.com/dotnetjalps/FluentNhiberNateMVC Hy vọng bạn thích nó. Chơ để biết thêm!!













Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 3598