开发者

Data is not really storing database in nhibernate

I am writing a simple program using 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");
        tr开发者_运维技巧y
        {
            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; }

    }
    }

Program is running without any exception. Generated sql is showing on console. But no data is saved in UserTable of Database1.mdf


Database1.mdf is being copied to the /bin/Debug folder when the application is built and the data is saved there.


Hmm. I'm surprised that you don't get exceptions. The Product class must have virtual properties, otherwise it won't work.

Also, I see you're using the MsSqlCeDialect. I haven't used SqlExpress but SqlExpress != SqlCe. Trying using MsSql2005Dialect or MsSql2005Dialect.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜