从EntityFramework中的存储过程返回复杂类型" CodeFirst"

时间:2017-03-02 03:55:11

标签: entity-framework stored-procedures dbcontext complextype

我正在使用" CodeFirst现有数据库"并从mycontext类引入了一个存储过程,看起来不错,但我映射到的实体有一个复杂的类型。

MyContext

public virtual List<Student> Get_AllStudents(int year, string classes, string indicators) {
        StringBuilder spCommand = new StringBuilder();// = "CALL Get_AllStudents(";
        //params object[] parameters;
        MySqlParameter[] mySqlParams = new MySqlParameter[]{new MySqlParameter("yearId", year),
                                                        new MySqlParameter("classIds", classes),
                                                        new MySqlParameter("indicatorList", indicators)};
        spCommand.Append("CALL Get_AllStudents(@yearId,@classIds,@indicatorList);");

        return this.Database.SqlQuery<Student>(spCommand.ToString(), mySqlParams).ToList<Student>();

    }

我的查询

select s.firstname, s.surname,s.IndicatorID from students s
    where ClassId in (classIds)
    and yearId = yearId
    and indicatorId in (indicatorList);

我的学生实体有一个复杂的类型&#34;名称&#34;

 public class Student
{
    public int studentID { get; set; }
    public string studentCode { get; set; }        
    public Name name { get; set; }


   public Nullable<System.DateTime> birthdate { get; set; }
}

public class Name {
    [Column("surname")]
    public string surname { get; set; }
    [Column("middlename")]
    public string middlename { get; set; }
    [Column("firstname")]
    public string firstname { get; set; }
    [Column("preferredname")]
    public string preferredname { get; set; }
}

如何告诉实体框架将s.firstname和s.surname映射到Student.Name.firstname和Student.Name.surname属性

我没有使用导入功能(因为它给了我一些我不想处理的愚蠢错误&#34;您的项目引用了最新版本的EntityFramework但是找不到与此版本兼容的EF数据提供程序...& #34;)我可以在mycontext类中更改某些sp设置以期望复杂类型吗?

错误 无法为财产创造价值&#39; name&#39;类型&#39; DbContexts.Name&#39;。 仅支持原始类型或枚举类型的属性。

0 个答案:

没有答案