我正在尝试获取存储过程的返回类型以匹配实体模型,这是一个简化版本:
ALTER PROCEDURE [dbo].[GetPerson]
@userId INT
AS
BEGIN
SET NOCOUNT ON;
-- Perform INSERT statement
SELECT
*
FROM
People
WHERE
PersonId = @result;
END
目前,此存储过程根据我的EDMX返回一个整数。但是,我希望它返回一个Person对象。我该怎么做呢?我正在使用Entity Framework 6
答案 0 :(得分:0)
恕我直言你无法从sql server返回一个CLR对象。您可以做的最好的事情是返回与C#代码中的实体类型完全匹配的正确字符串,并使用反射来创建对象。
例如
"NamespaceName.TypeName,AssemblyName"
中添加一个字符串,该字符串将从您的sql using System.Reflection; public static object CreateInstance(string typeName, string assemblyName) { object result = null; try { Assembly assembly = Assembly.Load(assemblyName); Type type = assembly.GetType(typeName, true, false); result = Activator.CreateInstance(type); } catch (Exception ex) { //Handle exception here } if (result == null) { //Can handle null here } return result; }
当然,此方法假定您的类具有默认构造函数。如果没有,那么你需要相应地修改代码。
希望这有帮助。