Asp.net mvc 3 存储过程MVC3实体框架-Varbinary

Asp.net mvc 3 存储过程MVC3实体框架-Varbinary,asp.net-mvc-3,entity-framework,Asp.net Mvc 3,Entity Framework,我的am Emp表如下所示: 我创建了一个如下所示的存储过程 ALTER PROCEDURE [dbo].[GetAllEmployees] AS BEGIN OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert SELECT EMPId, Firstname, Lastname, AddessId, JobId,

我的am Emp表如下所示:

我创建了一个如下所示的存储过程

ALTER PROCEDURE [dbo].[GetAllEmployees]
AS
BEGIN
OPEN SYMMETRIC KEY TestTableKey DECRYPTION
BY CERTIFICATE EncryptTestCert
SELECT  
        EMPId,
        Firstname,
        Lastname,
        AddessId,
        JobId,
        DateofBirth,
        CONVERT(NVARCHAR(50),DECRYPTBYKEY(EncryptFirstname)) AS [EncryptFirstname],
        CONVERT(NVARCHAR(50),DECRYPTBYKEY(EncryptLastname)) AS [EncryptLastname]
FROM 
        EMPloyee
END
我创建存储过程的原因是将表中的一些varbinary列转换为字符串,并将其与MVC3中的EF一起使用

我在模型中映射过程的方式如下所示

在我的EmployeeViewModel中,这是我将属性映射到字段的方式

[Description("EmployeeDetails")]
public class EmployeeViewModel: IEmployeeModel
{
   public Guid EmpId { get; set; }
   [Display(Name = "EncryptLastName")]
   public byte[] EncryptLastName { get; set; }

   [Display(Name = "EncryptFirstName")]
   public byte[] EncryptFirstName { get; set; }

   [Display(Name = "LastName")]
   public string LastName { get; set; }
}
在访问我的服务方法中的存储过程时,这是我访问它的方式

public List<EmployeeViewModel> GetEmpList()
{
   var ent = new EncryptionEntities();
   List<Employee> allEmp = new List<Employee>();
   allEmp = ent.GetEmployees().ToList();
   ConvertViewModelObject cvmo = new ConvertViewModelObject();
   List<EmployeeViewModel> empVM = new List<EmployeeViewModel>();

   foreach (var item in allEmp)
   {
      empVM.Add(cvmo.ConvertFromEmployee(item));
   }

   return empVM.ToList();
}

我发现这非常有用,并且在标题为“导入返回实体以外类型的存储过程”的部分中找到了答案。因此,解决方案出现在上面的最后一个屏幕截图中,即对话框“添加函数导入”中,而不是选择“实体”单选按钮,首先单击“获取列信息”,然后单击“创建新复杂类型”按钮。现在,您可以返回并选择复杂单选按钮,然后从下拉列表中选择此新类型。现在,您可以将视图设置为使用此模型,一切都会就绪。

我发现这非常有用,我在标题为“导入返回实体以外类型的存储过程”的部分中找到了答案。因此,解决方案出现在上面的最后一个屏幕截图中,即对话框“添加函数导入”中,而不是选择“实体”单选按钮,首先单击“获取列信息”,然后单击“创建新复杂类型”按钮。现在,您可以返回并选择复杂单选按钮,然后从下拉列表中选择此新类型。现在,您只需将视图设置为使用此模型即可。这与我遇到的问题完全相同。我知道这是一篇比较老的帖子,但你有没有找到解决办法?一天中的大部分时间我都在努力解决这个问题。这和我现在遇到的问题完全一样。我知道这是一篇比较老的帖子,但你有没有找到解决办法?一天中的大部分时间我都在想这个问题。
public EmployeeViewModel ConvertFromEmployee(Employee emp)
{
   if (emp == null)
      return null;

   var evm = new EmployeeViewModel();

   evm.LastName = emp.Lastname;
   evm.EncryptFirstName = emp.EncryptLastName;

   return evm;
}