[英]Entity framework doesn't generate result class
首先,我一直在寻找解决方案,但也许我做得不好,因为我可能会遗漏一些概念。
所以我的问题:我正在开发一个应用程序来处理数据库,使用实体框架。 我使用“EF Designer from database”创建模型,导入所有表、函数和存储过程。 问题来了。 当 C# 生成代码时,它还会生成类似“storedProcedureName_Result”的类,顾名思义,它是存储过程的结果。 C# 生成如下代码:
public virtual ObjectResult<uSP_ListSpecialities_Result> uSP_ListSpecialities()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<uSP_ListSpecialities_Result>("uSP_ListSpecialities");
}
没有结果:
public virtual ObjectResult<Nullable<int>> uSP_ListAvailableMedicBi()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>>("uSP_ListAvailableMedicBi");
}
我需要使用这些结果,但 C# 不会为所有存储过程生成这些结果。 这就是我的问题,我不知道为什么。
例如:此存储过程生成结果类:
CREATE PROCEDURE uSP_ListSpecialities
AS
BEGIN
SELECT id, nome
FROM Especialidade
END
它生成一个uSP_ListSpecialities_Result
类
但这个没有:
CREATE PROCEDURE uSP_ListAvailableMedicBi
AS
BEGIN
SELECT P.biPessoa
FROM Pessoa P
LEFT JOIN Medico M
ON( M.biPessoa = P.biPessoa)
WHERE M.biPessoa IS NULL
END
我在 SQLSMS 上运行了两者,都返回了预期的结果。
先感谢您
uSP_ListAvailableMedicBi 过程返回 Nullable Integer 那么如果它只是一个标准的 .NET 类型,那么生成结果类有什么意义呢?
编辑。
根据你的评论。 它确实为您返回了一张桌子。 它只是没有创建复杂的类型,因为它不需要。 下面的片段将帮助您:
public List<int> GetAvailableMedicBiList()
{
using(var ctx = YourEntities())
{
return (List<int>)ctx.uSP_ListAvailableMedicBi().ToList();
}
}
首先,我一直在寻找解决方案,但也许做得不好,因为我可能缺少一些概念。
所以我的问题是:我正在使用Entity Framework开发与数据库一起使用的应用程序。 我使用“来自数据库的EF Designer”创建模型,导入所有表,函数和存储过程。 问题来了。 当C#生成代码时,它还会生成类似“ storedProcedureName_Result”的类,顾名思义,它是存储过程的结果。 C#生成如下代码:
public virtual ObjectResult<uSP_ListSpecialities_Result> uSP_ListSpecialities()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<uSP_ListSpecialities_Result>("uSP_ListSpecialities");
}
没有结果:
public virtual ObjectResult<Nullable<int>> uSP_ListAvailableMedicBi()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>>("uSP_ListAvailableMedicBi");
}
我需要使用这些结果,但是C#不会为所有存储过程生成这些结果。 那就是我的问题,我不知道为什么。
例如:此存储过程生成结果类:
CREATE PROCEDURE uSP_ListSpecialities
AS
BEGIN
SELECT id, nome
FROM Especialidade
END
它生成一个uSP_ListSpecialities_Result
类
但这不是:
CREATE PROCEDURE uSP_ListAvailableMedicBi
AS
BEGIN
SELECT P.biPessoa
FROM Pessoa P
LEFT JOIN Medico M
ON( M.biPessoa = P.biPessoa)
WHERE M.biPessoa IS NULL
END
我都在SQLSMS上运行,并且都返回了预期的结果。
先感谢您
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.