gpt4 book ai didi

c# - Entity Framework 中的表值函数?

转载 作者:可可西里 更新时间:2023-11-01 07:46:50 25 4
gpt4 key购买 nike

是否可以使用 Entity Framework 调用表值函数 (TVF)?

我在我的数据库中定义了三个 TVF,它们没有出现在 Entity Framework 的模型中,也没有出现在“从数据库更新模型”向导中。

在 Linq-to-SQL 中很容易做到这一点,您只需将 TVF 拖到设计图面上,但在 L2E 中似乎不可能。

到目前为止,我还没有发现任何一起提到 TVF 和 Entity Framework 的内容。

最佳答案

如果您只需要从 Code-First 4.3 中的 TVF 获取类型列表形式的结果,您可以在 DbContext 上设置一个助手,例如

    public class ModelDbContext : DbContext
{

public IEnumerable<TOutput> FunctionTableValue<TOutput>(string functionName, SqlParameter[] parameters)
{
parameters = parameters ?? new SqlParameter[] { };

string commandText = String.Format("SELECT * FROM dbo.{0}", String.Format("{0}({1})", functionName, String.Join(",", parameters.Select(x => x.ParameterName))));

return ObjectContext.ExecuteStoreQuery<TOutput>(commandText, parameters).ToArray();
}

private ObjectContext ObjectContext
{
get { return (this as IObjectContextAdapter).ObjectContext; }
}
}

称它为

using (var db = new ModelDbContext())
{
var parameters = new SqlParameter[]
{
new SqlParameter("@Id", SqlDbType.Int),
};
parameters[0].Value = 1234;

var items = db.FunctionTableValue<Foo>("fn_GetFoos", parameters);
}

关于c# - Entity Framework 中的表值函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com