我该怎么办SELECT * INTO [temp table] FROM [stored procedure]?不FROM [Table],没有定义[temp table]?
Select所有数据都可以BusinessLine正常tmpBusLine工作.
select *
into tmpBusLine
from BusinessLine
Run Code Online (Sandbox Code Playgroud)
我尝试相同,但使用stored procedure返回数据,并不完全相同.
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Run Code Online (Sandbox Code Playgroud)
输出消息:
消息156,级别15,状态1,行2关键字'exec'附近的语法不正确.
我已经阅读了几个创建一个与输出存储过程结构相同的临时表的例子,它工作正常,但不提供任何列会很好.
我正在尝试使用Entity Framework创建一个基本示例来将SQL Server存储过程的输出映射到C#中的实体,但该实体具有不同(友好)的名称参数,而不是更隐蔽的名称.我也试图用Fluent(即非edmx)语法来做这件事.
什么有用......
存储过程返回名为:UT_ID,UT_LONG_NM,UT_STR_AD,UT_CITY_AD,UT_ST_AD,UT_ZIP_CD_AD,UT_CT的值
如果我创建这样的对象......
public class DBUnitEntity
{
public Int16 UT_ID { get; set; }
public string UT_LONG_NM { get; set; }
public string UT_STR_AD { get; set; }
public string UT_CITY_AD { get; set; }
public string UT_ST_AD { get; set; }
public Int32 UT_ZIP_CD_AD { get; set; }
public string UT_CT { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和像这样的EntityTypeConfiguration ......
public class DbUnitMapping: EntityTypeConfiguration<DBUnitEntity>
{
public DbUnitMapping()
{
HasKey(t => t.UT_ID);
}
}
Run Code Online (Sandbox Code Playgroud)
...我在DbContext的OnModelCreating中添加,然后我可以从数据库中获取实体,这很好,使用此....
var allUnits = _context.Database.SqlQuery<DBUnitEntity>(StoredProcedureHelper.GetAllUnitsProc); …Run Code Online (Sandbox Code Playgroud) 我需要一些问题的指导,我正在使用Entity Framework 4.0,我有一个DAL和BLL并且在页面上绑定到ObjectDataSource.
我不得不使用PIVOT动态SQL 编写存储过程,以我想要的方式从多个实体返回数据.现在我试图找出如何让Entity Framework返回一个我可以ObjectDataSource在页面上绑定到我的自定义对象,我需要使用自定义对象或动态对象,因为存储过程可以返回任意数量的列,所以我不能使用强类型类或实体,我也需要能够绑定它ObjectDataSource.
有人能指出一个很好的方法来做这个以及如何定义我的功能?请举几个代码示例.
我读到我应该尝试List<T>用于返回一个对象,因为EF不支持返回数据表/数据集,到目前为止我有以下内容,但我知道这是不正确的.
我没有太多使用仿制药,如果你能指出如何做到这一点,我相信这对很多人都有帮助.请提供函数的代码示例以及如何绑定ObjectDataSource到返回对象?
非常感谢您的帮助!!
感谢您的帮助Richard根据您对使用DbDataRecord的建议,这就是我现在的功能
ObjectDataSourceDAL中的C#函数
public List<DbDataRecord> GetData(int product_id)
{
List<DbDataRecord> availableProducts = new List<DbDataRecord>();
var groupData = context.ExecuteStoreQuery<DbDataRecord>("exec
spGetProducts @ProductID={0}", product_id);
availableProducts = groupData.ToList<DbDataRecord>();
return availableProducts;
}
Run Code Online (Sandbox Code Playgroud)
ObjectDataSource 在ASPX页面中
<asp:ObjectDataSource ID="ODSProductAvailability" runat="server"
TypeName="Project.BLL.ProductBL"
SelectMethod="GetData" >
<SelectParameters>
<asp:SessionParameter Name="product_id" SessionField="ProductID" />
</SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
现在,当我访问页面时,我收到此错误:
结果类型"System.Data.Common.DbDataRecord"可能不是抽象的,必须包含默认构造函数
这是因为ExecuteStoreQuery期望被定义为类还是实体?如何根据存储过程结果创建一个对象并将其分配给它?
c# stored-procedures entity-framework objectdatasource entity-framework-4