如何在实体框架代码优先方法中使用表值函数?
Posted
技术标签:
【中文标题】如何在实体框架代码优先方法中使用表值函数?【英文标题】:How to use table valued function in entity framework code first approach? 【发布时间】:2013-05-27 08:37:34 【问题描述】:我正在使用 Entity Framework 进行一个项目,现在我遇到了一种情况,我需要使用表值函数,它返回具有 2 列的表,因此我搜索了很多,我知道我们使用表值函数数据库优先的方法,而我在代码中首先需要它。
情况是这样的
我有一个有两列的表
Table1
Id int PK
priority int
我想在我的 EF 查询中使用这个表。
他们有什么方法可以使用表值函数吗?
【问题讨论】:
我从这篇文章中得到了一些帮助,但我不确定它是否有效,blogs.msdn.com/b/adonet/archive/2011/06/30/… 【参考方案1】:我们可以通过使用 CLR 生成的 C# 代码为数据库优先方法来做到这一点
您可以参考此网址获取完整说明 http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-table-valued-functions-june-ctp.aspx
我用过这段代码,对我来说效果很好
[EdmFunction("NorthwindEntities", "GetDetailsForOrder")]
public IQueryable<Order_Detail> GetDetailsForOrder(Nullable<global::System.Int32> oid)
ObjectParameter oidParameter;
if (oid.HasValue)
oidParameter = new ObjectParameter("Oid", oid);
else
oidParameter = new ObjectParameter("Oid", typeof(global::System.Int32));
return base.CreateQuery<Order_Detail>("[NorthwindEntities].[GetDetailsForOrder](@Oid)", oidParameter);
【讨论】:
【参考方案2】:我创建了一个自定义模型约定,它允许在 EF6.1 的 CodeFirst 中使用存储函数。该约定在 NuGet http://www.nuget.org/packages/EntityFramework.CodeFirstStoreFunctions 上可用。这是包含所有详细信息的博文链接:http://blog.3d-logic.com/2014/04/09/support-for-store-functions-tvfs-and-stored-procs-in-entity-framework-6-1/
【讨论】:
以上是关于如何在实体框架代码优先方法中使用表值函数?的主要内容,如果未能解决你的问题,请参考以下文章