How to Reproduce -
namespace NHibernatePossibleThreadIssue
{
public class Program
{
private static ISession Session;
public static void Main(string[] args)
{
Configuration conf = new Configuration();
IDictionary properties = new Dictionary
{
{"hibernate.connection.driver_class", "NHibernate.Driver.OracleClientDriver"},
{"hibernate.connection.connection_string", "Data Source=XE; user ID=sso; Password=sso"},
{"hibernate.dialect", "NHibernate.Dialect.Oracle9Dialect"},
{"hibernate.show_sql", "true"}
};
conf.SetProperties(properties);
conf.AddClass(typeof (SomeDomain));
conf.AddClass(typeof (SomeChild));
ISessionFactory factory = conf.BuildSessionFactory();
Session = factory.OpenSession();
LoadInSessionTwice();
//ConfigureCastle();
//TryThreading();
Console.ReadKey();
}
private static void LoadInSessionTwice()
{
SomeDomain domain = Session.Load
IQuery query = Session.CreateQuery(" from SomeDomain d where d.desc= :desc ");
query.SetParameter("desc", "helloworld");
SomeDomain evicted = query.List
Session.Evict(evicted);
Session.Flush();
}
Mapping and domain classes
public class SomeDomain
{
public long id { get; set; }
public string desc { get; set; }
private SomeChild child;
public SomeChild Child
{
get
{
if (child == null)
child = new SomeChild {Domain = this};
return child;
}
set { child = value; }
}
}
public class SomeChild {
public long Id { get; set; }
public SomeDomain Domain { get; set;}
public string description { get; set; }
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernatePossibleThreadIssue">
<class name="NHibernatePossibleThreadIssue.SomeDomain" lazy="false" table="SOMEDOMAIN">
<id name="id" type="long" column="ID" unsaved-value = "0" >
<generator class="native">
<param name="sequence">COR_SEQ</param>
</generator>
</id>
<property name="desc" column="text"/>
<one-to-one name="Child"
class="NHibernatePossibleThreadIssue.SomeChild" cascade="all-delete-orphan"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernatePossibleThreadIssue">
<class name="NHibernatePossibleThreadIssue.SomeChild" lazy="false" table="SOMECHILD">
<id name="Id" column="SD_ID">
<generator class="foreign">
<param name="property">Domain</param>
</generator>
</id>
<one-to-one name="Domain" class="NHibernatePossibleThreadIssue.SomeDomain" constrained="true"/>
<property name="description"/>
</class>
</hibernate-mapping>
No comments:
Post a Comment