С Fluent Nhibernate нам не нужно писать и поддерживать отображение в xml. Вы можете написать классы для сопоставления ваших доменных объектов с таблицами базы данных. Если вы хотите узнать, как мы можем сделать это с существующей базой данных и Fluent Nhibernate, я также написал сообщение в блоге о работе CRUD с Fluent Nhibernate и ASP.NET MVC. После написания этого сообщения в блоге я получил много писем о как мы можем создать базу данных из Fluent Nhibernate, как мы можем сделать то же самое с Entity Framework Code First. Поэтому я подумал, что было бы неплохо написать сообщение об этом в блоге вместо того, чтобы писать отдельные электронные письма.
Как создать таблицы из класса через Fluent Nhibernate:
Чтобы продемонстрировать, как мы можем создавать классы отображения на основе таблиц, мы собираемся создать консольное приложение, добавив новый проект, как показано ниже.
Как только вы закончили с созданием приложения. Пришло время добавить ссылку на Fluent Nhibernate. Вы можете сделать это через менеджер пакетов вашей библиотеки, как показано ниже.
Теперь, когда я добавил код Fluent Nhibernate, я создал простой класс «Клиент», как показано ниже.
namespace FluentNhibernateCodeFirst { public class Customer { public virtual int CustomerId { get; set; } public virtual string FirstName { get; set; } public virtual string LastName { get; set; } } }
Здесь вы можете видеть, что я создал три свойства, которые также будут столбцом нашей таблицы базы данных. Теперь, когда мы знаем, что нам нужно написать класс отображения для клиента, ниже приведен мой класс карты клиента.
using FluentNHibernate.Mapping; namespace FluentNhibernateCodeFirst { public class CustomerMap : ClassMap<Customer> { public CustomerMap() { Id(c => c.CustomerId); Map(c => c.FirstName); Map(c => c.LastName); } } }
Здесь я сопоставляю идентификатор Customer Id как идентификатор клиента, который будет первичным ключом. Теперь пришло время написать код для создания базы данных и сохранения некоторых данных в созданной таблице клиентов.
using System; using System.Configuration; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; using NHibernate; using NHibernate.Tool.hbm2ddl; namespace FluentNhibernateCodeFirst { class Program { private static ISessionFactory _sessionFactory; static void Main(string[] args) { //creating database string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString; CreateDatabase(connectionString); Console.WriteLine("Database Created sucessfully"); //creating a object of customer Customer customer=new Customer { CustomerId = 1, FirstName = "Jalpesh", LastName = "Vadgama" }; //saving customer in database. using(ISession session = _sessionFactory.OpenSession()) session.Save(customer); Console.WriteLine("Customer Saved"); } static void CreateDatabase(string connectionString) { var configuration = Fluently.Configure() .Database(MsSqlConfiguration.MsSql2012.ConnectionString(connectionString).ShowSql) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<CustomerMap>()) .BuildConfiguration(); var exporter = new SchemaExport(configuration); exporter.Execute(true, true, false); _sessionFactory = configuration.BuildSessionFactory(); } } }
Здесь, в приведенном выше коде, если вышеупомянутый код заботится полностью, я создал функцию CreateDatabase. В этой функции сначала создается сопоставление, а затем выполняется сопоставление схемы с базой данных для создания таблицы.
После создания таблицы я инициализировал объект customer и сохранил его в базе данных. Теперь, когда вы запускаете это приложение. Вы получите вывод, как показано ниже, как и ожидалось.
И теперь, если вы видите базу данных в SQL Management Studio, таблица Customer будет создана, как показано ниже.
И если вы видите эту таблицу, данные также вставляются, как показано ниже.
Вот и все. Надеюсь, вам понравится. Оставайтесь с нами, чтобы узнать больше!
You can find complete sourcecode of this example at github on —
https://github.com/dotnetjalps/FluentHinbernateCodeFirst