【发布时间】:2010-11-18 01:07:42
【问题描述】:
在深入研究 Fluent nHibernate 时,我发现了使用它的潜在破坏者......
给定以下 POCO 代码。
public class Customer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Details Details { get; set; }
}
public class Details
{
public virtual int Id { get; set; }
public virtual IList<Orders> Orders { get; set; }
}
public class CustomerMap : ClassMap<Customer>
{
// perform mapping
}
public class DetailsMap : ClassMap<Details>
{
// perform mapping
}
我加载了 ASP.NET MVC 并尝试使用 Json 序列化。
using System.Web.Script.Serialization;
public static partial class JsonExtensions
{
public static string ToJson(this object item)
{
return new JavaScriptSerializer().Serialize(item);
}
}
而且,当我将一个查询从我的 nHibernate 上下文传递到 ToJson 方法时,我得到了一个错误!
在序列化“System.Reflection.RuntimeModule”类型的对象时检测到循环引用。
无论我拉一个对象,还是一个对象列表..或任何与此相关的东西,似乎都是这样做的。我什至尝试将我的课程标记为[Serializable],结果相同。使用 Microsoft Entity Framework Code-Only 方法的完全相同的类不会发生这种情况。
我不能将 nHibernate DTO 反序列化为 JSON 吗?
添加更多代码以供检查。
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var customers= session.CreateCriteria(typeof(Customer)).List<Customer>();
foreach (var customer in customers)
{
Console.WriteLine(customer.ToJson());
}
Console.ReadLine();
}
}
【问题讨论】:
标签: c# json fluent-nhibernate