C# EF代码优先:使用Fluent API映射非表对象

C# EF代码优先:使用Fluent API映射非表对象,c#,.net,entity-framework,ef-code-first,C#,.net,Entity Framework,Ef Code First,如何使用fluent API映射EF CodeFirst中的非表对象,如视图、StoredProcess等。代码优先中根本不支持存储过程映射。视图的映射必须被破解——您将假装视图是一个表,并希望您的应用程序能够工作。Fluent api设计为仅支持代码优先方案=您的应用程序将创建数据库。因此,它不支持任何数据库功能,如存储过程、视图或函数等DB级逻辑。映射到存储过程和vew在代码中尚不受支持。这些是Julia Lerman的编程实体框架中的一些变通方法:代码优先 映射到可更新视图 modelBu

如何使用fluent API映射EF CodeFirst中的非表对象,如视图、StoredProcess等。

代码优先中根本不支持存储过程映射。视图的映射必须被破解——您将假装视图是一个表,并希望您的应用程序能够工作。Fluent api设计为仅支持代码优先方案=您的应用程序将创建数据库。因此,它不支持任何数据库功能,如存储过程、视图或函数等DB级逻辑。

映射到存储过程和vew在代码中尚不受支持。这些是Julia Lerman的编程实体框架中的一些变通方法:代码优先

映射到可更新视图

modelBuilder.Entity().ToTable(“我的视图”)

视图列名应与实体字段名相同,并且 可以使用实体框架插入、更新和删除数据 以及选择它。只要先撒谎编码,然后说出观点 像桌子一样

使用视图填充对象

var myEntity=dbContext.myEntity.SqlQuery(“从dbo.MY_视图中选择*)

视图列名应该与实体字段名相同,并且您仍然可以获得DbContext功能,例如更改跟踪、延迟加载

使用视图填充非模型对象

var myNonModel=dbContext.Database.SqlQuery(“从dbo.MY_视图中选择*)

视图列名应与实体字段名相同

使用存储过程

使用视图时使用相同的技术


var myEntity=dbContext.myEntity.SqlQuery(“dbo.StoredProcedureName@p0@p1”,myParam1,myParam2)

+1:当真正首先使用代码或任何与真正代码相关的问题/答案时,数据库不应该有任何应用程序使用的视图、函数或S.p。