wus*_*her 8 nhibernate fluent-nhibernate
我有一个实体人:
public class Person
{
public virtual int Id {get; set; }
public virtual string FirstName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
与映射:
public class PersonMap
{
public PersonMap()
{
Table(TABLE_NAME);
Id( x => x.Id);
Map(x => x.FirstName).Not.Nullable();
Map(x => x.LastName).Not.Nullable();
Map(x => x.MiddleName).Not.Nullable();
}
}
Run Code Online (Sandbox Code Playgroud)
有些stuations我希望Nhibernate返回字典而不是实体:
IDictionary<string,string> person = session.Get(id);//????
string firstName = person["FirstName"];
Run Code Online (Sandbox Code Playgroud)
如果不添加不同的映射,这可能吗?
Dan*_*anP 12
您需要定义自己的ResultTransformer实现,以使其按您需要的方式工作.以下是您可以根据需要进行调整的参考实现.完全没有错误检查等; 所以谨慎使用;)
using System;
using System.Collections;
using NHibernate;
using NHibernate.Properties;
using NHibernate.Transform;
[Serializable]
public class DictionaryResultTransformer : IResultTransformer
{
public DictionaryResultTransformer()
{
}
#region IResultTransformer Members
public IList TransformList(IList collection)
{
return collection;
}
public object TransformTuple(object[] tuple, string[] aliases)
{
var result = new Dictionary<string,object>();
for (int i = 0; i < aliases.Length; i++)
{
result[aliases[i]] = tuple[i];
}
return result;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5565 次 |
最近记录: |