C# 实体框架到类的本机sql映射

C# 实体框架到类的本机sql映射,c#,sql,entity-framework,C#,Sql,Entity Framework,我得到了一个代码优先EF,我想对更复杂的select语句使用本机sql。 当我尝试执行时: using (VaultsDbContext db = new VaultsDbContext()) { var contracts = db.Contracts.SqlQuery("select * from Contracts").ToList<Contract>(); } 如果类包含复杂类型或EF不支持复杂类型,是否有方法从本机sql映射到该类?如果复杂类型是映射到另一个表(联接

我得到了一个代码优先EF,我想对更复杂的select语句使用本机sql。 当我尝试执行时:

using (VaultsDbContext db = new VaultsDbContext())
{
   var contracts = db.Contracts.SqlQuery("select * from Contracts").ToList<Contract>();
}
如果类包含复杂类型或EF不支持复杂类型,是否有方法从本机sql映射到该类?如果复杂类型是映射到另一个表(联接)的实体,该怎么办

编辑:
版本:Entity Framework 6

根据经验,表中的所有字段都不必包含在模型中。在将更新安装到生产环境中时,这是一件好事。
您是否尝试过使用Entity Framework Power tools在单独的临时项目上反向工程表?这是一个Nuget包,我发现它在代码优先编程中非常有用。反向工程将覆盖现有文件,因此请确保不要在实时代码上执行此操作

您使用的是哪个版本的EF?您使用的是“代码优先”吗?另外,如果您的所有表都有
MetaProps
,为什么不为其创建一个表,而不是将这些列添加到所有需要它的表中呢。这不是RDB的用途吗?@sam我用EF 6。是的,先编码,见第一句。如果我有元数据的专用表,那么所有查询都需要与该表连接以检查deleteflag。这降低了性能,增加了复杂性。很抱歉,我在第一句话中首先漏掉了代码。我理解您对性能的担忧,但是可以通过在加入的不同列上引入索引来改进这些担忧。为了回答您最初的问题,我认为您不能将表的一部分(几列)映射到类。
public class Contract
{
    public long Id { get; set; }
    ...
    public MetaProps MetaProps { get; set; }
}