任何人都可以帮我一些想法吗?下面是我的问题。假设我有一个名为 A 的实体,其字段为 A1、A2、A3 和 A4,而且我有 3 个存储过程,它们仅从表 A 返回数据。
(注:表 A 只有 4 列 A1、A2、A3、A4)。
第一个存储过程返回 A1、A2 第二个存储过程返回 A1、A2、A3 第三个存储过程单独返回 A1。
对于上述场景,我需要创建三个不同的映射还是有任何解决方法?如何使用单个实体 A 和更少的更改代码来处理这种场景......
我的场景:
public IList<Userdatasw> Find(string userName)
{
var s = ServiceLocator.Resolve<IeGoatSessionFactory>().OpenSession();
// Executing the stored procedure
IList userList1 = s.CreateSQLQuery("exec dbo.IFSEntry @UserName=:UserName")
.AddScalar("Password", NHibernateUtil.String)
.AddScalar("UserLevel", NHibernateUtil.Int32)
.AddScalar("UserName", NHibernateUtil.String)
.AddScalar("EmployeeId", NHibernateUtil.String)
.AddScalar("SenAccntManager", NHibernateUtil.String)
.AddScalar("updaterequired", NHibernateUtil.String)
.SetParameter("UserName", userName).List();
// Trying to cast anonymous type to Userdatasw
IList<Userdatasw> userdatasw1 = userList1.OfType<Userdatasw>().ToList();
return userdatasw1;
}
在上面的代码中,返回类型是 Ilist,但我需要将其转换为 Userdatasw,代码更改较少。我在 Nhiberante 中看到了很多解释“从存储过程填充实体”的链接,但我有 20 个字段的实体,并且在上面的 SP 中只返回 6 个值。
那么对于每个返回相同类型的 SP,我们需要创建单独的映射吗?
任何想法将不胜感激。
谢谢,文卡特什。Ĵ