EF Code First:使用Fluent API映射非表对象

时间:2012-01-20 09:52:58

标签: c# .net entity-framework ef-code-first

如何使用流畅的API在EF Code First中映射我的重要对象,例如Views,StoredProcedure等。

2 个答案:

答案 0 :(得分:4)

首先在代码中不支持映射到存储过程和vew。这些是Julia Lerman编程实体框架:Code First的一些工作。

映射到可更新视图

modelBuilder.Entity<MyEntity>().ToTable("MY_VIEW")

查看列名称应与实体字段名称相同     可以使用实体框架来插入,更新和删除数据     以及选择它。 只是欺骗Code First并告诉View     如表

使用视图填充对象

var myEntity = dbContext.MyEntity.SqlQuery("SELECT * FROM dbo.MY_VIEW")

查看列名称应与实体字段名称相同,您仍然可以获得DbContext功能,例如更改跟踪,延迟加载。

使用视图填充非模型对象

var myNonModel = dbContext.Database.SqlQuery("SELECT * FROM dbo.MY_VIEW")

查看列名称应与实体字段名称相同。

使用存储过程

使用视图的相同技术。

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

答案 1 :(得分:2)

首先,代码中不支持存储过程的映射。视图映射必须被黑客入侵 - 您将假装视图是一个表,并希望您的应用程序可以正常工作。 Fluent-api旨在仅支持代码优先方案=您的应用程序将创建数据库。因此,它不支持任何数据库级逻辑的数据库功能,如存储过程,视图或函数。