本文介绍了EF 6码第一个存储过程 - 只读的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我寻觅了几个帖子,不过既然来了短。我先用EF6代码试图从一个存储过程已经在数据库中设置的结果。我的应用程序很简单,它由两个不同的服务器获取数据,进行一些业务逻辑,然后显示用户。我可以使用的.edmx
文件罚款,在XML文件中的函数映射。当我使用电动工具对自己表现出的XML文件,我不从我的代码中看到的功能导入下面,所以我要么缺少一个设置或无法使用 ExecuteFunction来()
。
-
我可以使用
ExecuteFunction来()
使用代码第一?我的存储过程只返回记录。我之所以有这样的设置是因为存储过程订阅其他应用程序,我们希望让所有的更改查询在一个地方(SSMS)。我知道我可以使用ExecuteStoredQuery
/ExecureStoredCommand
,但我想坚持到约定如果我要使用的.edmx
模式。 -
如果我可以使用
ExecuteFunction来
,在哪里以及如何配置我的的DbContext
来识别存储过程?随着我的设置下面我收到错误
Can I use Fluent API? Thanks.
public class JobContext : DbContext
{
public JobContext()
: base("name=JobContext")
{
// My context will only define a slice of the database
Database.SetInitializer<JobContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Job>();
}
public virtual ObjectResult<Job> uspGetJobs(string startDate)
{
var startDateParameter = startDate != null ?
new ObjectParameter("startDate", startDate) :
new ObjectParameter("startDate", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.<Job>("uspGetJobs", startDateParameter);
}
}
解决方案
since it was a read only stored procedure I ended up doing this instead of trying to mimick the generated model.
public virtual List<Jobs> uspGetJobs(string startDate)
{
var startDateParameter = startDate != null ?
new SqlParameter("startDate", startDate) :
new SqlParameter("startDate", typeof(string));
return this.Database.SqlQuery<PlannedJobs>("uspGetPlannedJobs @startDate, @locationCode", startDateParameter, locationCodeParameter).ToList();
}
这篇关于EF 6码第一个存储过程 - 只读的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!