0
我做了一个简单的示例应用程序来测试Fluent NHibernate自动映射功能,但我保存时出现异常。Fluent NHibernate和自动映射关系问题
这是我的例子看起来像:
public class Item {
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IList<Detail> Details { get; set; }
public Item() {
Details = new List<Detail>();
}
}
public class Detail {
public virtual int Id { get; protected set; }
public virtual int ItemId { get; set; }
public virtual string Name { get; set; }
}
class Program {
static void Main(string[] args) {
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession()) {
using (var transaction = session.BeginTransaction()) {
Console.WriteLine("Enter name for new item: ");
var itemName = Console.ReadLine();
var page = new Item { Name = itemName };
Console.WriteLine("Enter name of new detail");
var detailName = Console.ReadLine();
var detail = new Detail {Name = detailName };
page.Details.Add(detail);
session.SaveOrUpdate(page);
transaction.Commit();
}
using (session.BeginTransaction()) {
}
Console.ReadKey();
}
}
private static ISessionFactory CreateSessionFactory() {
var model = AutoMap.AssemblyOf<Program>();
var sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(connection)
.Cache(c => c.UseQueryCache()
.ProviderClass<HashtableCacheProvider>())
.ShowSql())
.Mappings(m => m.AutoMappings.Add(model))
.BuildSessionFactory();
return sessionFactory;
}
}
此代码抛出时器transaction.commit()运行异常,异常是对象引用一个未保存的瞬态的实例 - 冲洗之前保存的瞬态的实例。
那么,任何人都可以帮我弄清楚有什么问题吗?
我可以在FluentNHibernate程序集中找到Cascade属性,是否应该使用此属性来修饰我的类属性? 如果没有太大的麻烦,如果你可以给我一个例子,这将是很好的。谢谢 – Marcus 2009-09-27 16:10:56
你知道吗,我刚刚写了一篇关于这个东西的文章:http://mookid.dk/oncode/archives/643 - 实际上,我不知道FNH中有一个CascadeAttribute,我正在说关于是我自己的。我不知道FNH中的人做了什么。 – mookid8000 2009-09-27 16:22:33
对不起,没有看到那里的问号:)好吧,你现在可能已经知道了:它是自制的 – mookid8000 2009-09-27 16:25:40