Данные на самом деле не хранят базу данных в nhibernate - PullRequest
0 голосов
/ 10 сентября 2011

Я пишу простую программу, используя nhibernate Program.cs

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using NHibernate;
  using NHibernate.Cfg;
  using System.Data.SqlServerCe;
  using NHibernate.ByteCode.LinFu;


  namespace FirstSolution
  {
    class Program
  {
    static void Main(string[] args)
    {
        Product p = new Product();
        p.id = "padu";
        p.name = "Sayan";
        p.category = "Bogus";
        Configuration cfg = new Configuration();
        cfg.AddXmlFile("C:/Users/win7/Documents/Visual Studio 2008/Projects/FirstSolution/FirstSolution/Product.hbm.xml");
        try
        {
            using (ISessionFactory factory = cfg.BuildSessionFactory())
            {
                using (ISession session = factory.OpenSession())
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {

                        // Tell NHibernate that this object should be saved
                        session.Save(p);

                        // commit all of the changes to the DB and close the ISession
                        session.Flush();
                        transaction.Commit();
                        session.Close();
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        string s;
        s = Console.ReadLine();

       }
       }
       }

App.config

      <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
      <configSections>
       <section name="hibernate-configuration"
         type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
       </configSections>
      <connectionStrings>
      <add name="FirstSolution.Properties.Settings.Database1ConnectionString"
         connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|    \Database1.mdf;Integrated Security=True;User Instance=True"
       providerName="System.Data.SqlClient" />
      </connectionStrings>
      <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
       <session-factory>
      <property          name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
  <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="proxyfactory.factory_class">
         NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu
     </property>
     <property name="connection.connection_string">Data Source=.\SQLEXPRESS;   AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=true;User Instance=true;</property>
     <property name="show_sql">true</property>
     <mapping assembly="FirstSolution"/>
     </session-factory>
     </hibernate-configuration>
    </configuration>

Product.hbm.xml

   <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="FirstSolution"     assembly="FirstSolution">
    <class name="Product" table="UserTable" lazy="false">
    <id name="id" column="id" type="String" length="10">
    <generator class="assigned"/>
    </id>
    <property name="name" column="name" type="String" length="10"/>
   <property name="category" column="category" type="String" length="10"/>
   </class>
   </hibernate-mapping>

Product.cs

   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;

   namespace FirstSolution
   {
    public class Product
    {
    public String id { get; set; }
    public String name { get; set; }
    public String category { get; set; }

    }
    }

Программа работает без каких-либо исключений.Сгенерированный sql показывает на консоли.Но в UserTable базы данных Database1. Mdf

данные не сохраняются.

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Database1.mdf копируется в папку / bin / Debug при сборке приложения и сохранении там данных.

0 голосов
/ 14 сентября 2011

Хм.Я удивлен, что вы не получаете исключений.Класс Product должен иметь виртуальные свойства, иначе он не будет работать.

Кроме того, я вижу, что вы используете MsSqlCeDialect.Я не использовал SqlExpress, но SqlExpress! = SqlCe.Попытка использовать MsSql2005Dialect или MsSql2005Dialect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...