2
我想用一個參數來執行存儲過程,該參數使用EF4「Code First」返回表。對於這個目的,我確信一些DTO,它不必返回實體。我曾嘗試:實體框架4 - 代碼優先和存儲過程
一)創建函數導入EDMX文件,並將其添加到我的ObjectContext的是這樣的:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.RegisterEdmx("Model.edmx");
}
但我得到了InvalidOperationException
說:「現有模型的註冊不能代碼後,第一次使用使用流利API的配置已經啓動。「
b)獲得下屬的連接並執行該過程:
var connection = this.objectContext.UnderlyingContext.Connection;
connection.Open();
DbCommand command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "booklog.Recommendations";
command.Parameters.Add(
new EntityParameter("userId", DbType.Guid) { Value = this.userId });
var reader = command.ExecuteReader();
// etc.
其中
public class MyObjectContext : DbContext
{
public System.Data.Objects.ObjectContext UnderlyingContext
{
get { return this.ObjectContext; }
}
// ....
}
,但這種方法並不能正常工作。它拋出InvalidOperationException
帶有消息「在當前工作空間中找不到FunctionImport指定的容器'booklog'」。
在EF 4 Code First CTP 5中,'DbContext'中沒有'ObjectContext'屬性。相反,使用'Database'屬性。 – 2011-01-14 18:15:48