Entity framework 将sql视图映射到EF 6中的现有实体?
我有一个表dbo.Tasks,一个任务类,一个任务映射,并将其添加到DB上下文中没有问题。我还有一个返回任务的数据库视图dbo.vwComplexTaskQuery。如何将此视图映射到任务类?我希望能够做到:Entity framework 将sql视图映射到EF 6中的现有实体?,entity-framework,Entity Framework,我有一个表dbo.Tasks,一个任务类,一个任务映射,并将其添加到DB上下文中没有问题。我还有一个返回任务的数据库视图dbo.vwComplexTaskQuery。如何将此视图映射到任务类?我希望能够做到: List<Task> Tasks = db.vwComplexTaskQuery.ToList(); 简化任务映射类 public TaskMap() { // Primary Key this.HasKey(t =
List<Task> Tasks = db.vwComplexTaskQuery.ToList();
简化任务映射类
public TaskMap()
{
// Primary Key
this.HasKey(t => t.TaskId);
this.Property(t => t.Title)
.IsRequired()
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("Tasks");
this.Property(t => t.TaskId).HasColumnName("TaskId");
this.Property(t => t.Title).HasColumnName("Title");
}
这是可能的,如果是这样,一个例子或链接到文档将是伟大的 我找到了一个解决方案:
List<Task> tasks = db.Tasks.SqlQuery("Select * from vw_AllTasks").ToList<Task>();
我找到了一个解决方案:
List<Task> tasks = db.Tasks.SqlQuery("Select * from vw_AllTasks").ToList<Task>();
差不多4年后。。。EF6已经推出那么久了?哇 默认情况下,EF不能很好地处理视图:EDMX Database first和Code first反向工程都对视图做出了一些愚蠢的假设,例如,视图不能具有与实体相同的类型,视图的实体与其他实体没有关系,视图的所有非空列都必须是复合主键,等等 …但是,如果您手动重写EF生成的任何内容,使其认为视图是表,那么它将完全正确地工作导航属性等。但是,这样做有点困难,需要在从数据库更新模型时重新执行 幸运的是,有一个解决方案——如果你不介意把手弄脏一点的话:有一个第三方,开源,Entity Framework model generator T4模板不需要VS扩展:只需在项目中包含3个文件,也可以作为名为ReversePOCO的NuGet软件包提供:免责声明:几个月前,我提供了一些补丁,专门用于支持视图处理 默认情况下,ReversePOCO中的T4模板生成的代码与EF6的code First generator创建的代码类似,但处理视图非常简单: 在配置ReversePOCO设置对象的Database.tt文件中,确保Settings.IncludeViews=true。 在2.37.1版中查找Settings.ViewProcessing回调函数,如310。 取消对现有代码的注释并对其进行修改以满足您的偏好。您需要列出视图中哪些列是主键。 在版本2.37.1的第326行附近查找Settings.AddForeignKeys回调。 取消对现有代码的注释,并对其进行修改以匹配所需的外键关系。这将确保正确创建导航属性,并完全支持复合外键。
差不多4年后。。。EF6已经推出那么久了?哇 默认情况下,EF不能很好地处理视图:EDMX Database first和Code first反向工程都对视图做出了一些愚蠢的假设,例如,视图不能具有与实体相同的类型,视图的实体与其他实体没有关系,视图的所有非空列都必须是复合主键,等等 …但是,如果您手动重写EF生成的任何内容,使其认为视图是表,那么它将完全正确地工作导航属性等。但是,这样做有点困难,需要在从数据库更新模型时重新执行 幸运的是,有一个解决方案——如果你不介意把手弄脏一点的话:有一个第三方,开源,Entity Framework model generator T4模板不需要VS扩展:只需在项目中包含3个文件,也可以作为名为ReversePOCO的NuGet软件包提供:免责声明:几个月前,我提供了一些补丁,专门用于支持视图处理 默认情况下,ReversePOCO中的T4模板生成的代码与EF6的code First generator创建的代码类似,但处理视图非常简单: 在配置ReversePOCO设置对象的Database.tt文件中,确保Settings.IncludeViews=true。 在2.37.1版中查找Settings.ViewProcessing回调函数,如310。 取消对现有代码的注释并对其进行修改以满足您的偏好。您需要列出视图中哪些列是主键。 在版本2.37.1的第326行附近查找Settings.AddForeignKeys回调。 取消对现有代码的注释,并对其进行修改以匹配所需的外键关系。这将确保正确创建导航属性,并完全支持复合外键。