Tag: stored procedures

在entity framework中将ObjectResult与输入参数一起使用到StoredProcedure的正确方法是什么? (输出映射到复杂类型属性)

我有几个列表框,它有一个SelectedItem属性,我打算用它作为输入参数在Entity Framework中执行我的存储过程。 我现在意识到我唯一希望轻松返回实体对象,因为我的存储过程的结果是将存储过程(或函数导入)映射到与输出匹配的复杂类型。 (使用Julie Lerman的post做出这个决定。) 但是,我需要帮助使用ObjectResult和EntityFramework来捕获我的listbox SelectedItem属性并将它们提供给存储过程(从而输出我的复杂类型实体)。 有人熟悉这个过程吗? 任何帮助将不胜感激(包括猜测)。 如果我能更清楚,请告诉我。

从Entity框架返回自定义对象并分配给对象数据源

我需要一些问题的指导,我正在使用Entity Framework 4.0,我有一个DAL和BLL并且在页面上绑定到ObjectDataSource。 我不得不使用PIVOT和动态SQL编写存储过程,以便按照我想要的方式从多个实体返回数据。 现在我想弄清楚如何让Entity Framework返回一个我可以绑定到页面上的ObjectDataSource的自定义对象,我需要使用自定义对象或动态对象,因为存储过程可以返回任意数量的列所以我不能使用强类型类或实体,我还需要能够将它与ObjectDataSource绑定。 有人能指出一个很好的方法来做这个以及如何定义我的function? 请提供一些代码示例。 我读到我应该尝试使用List返回一个对象,因为EF不支持返回数据表/数据集,到目前为止我有以下内容,但我知道这是不正确的。 我没有太多使用仿制药,如果你能指出如何做到这一点,我相信这对很多人都有帮助。 请提供该函数的代码示例以及如何将ObjectDataSource绑定到返回对象? 非常感谢您的帮助! 感谢您的帮助Richard根据您对使用DbDataRecord的建议,这就是我现在的function DAL中ObjectDataSource C#函数 public List GetData(int product_id) { List availableProducts = new List(); var groupData = context.ExecuteStoreQuery(“exec spGetProducts @ProductID={0}”, product_id); availableProducts = groupData.ToList(); return availableProducts; } ASPX页面中的ObjectDataSource 现在,当我访问页面时,我收到此错误: 结果类型“System.Data.Common.DbDataRecord”可能不是抽象的,必须包含默认构造函数 这是因为ExecuteStoreQuery期望被定义为类还是实体? 如何根据存储过程结果创建一个对象并将其分配给它?

C#ASP.Net Parameters.AddWithValue拒绝参数的空值

我正在使用存储过程填充表。 该表允许名称的中间首字母’null’,但我收到以下错误消息: 过程或函数’uspInsertPersonalAccountApplication’需要参数’@MiddleInitial’,它未提供。 提前致谢! public void ProcessForm(string[] InputData) { string ConnString = System.Configuration.ConfigurationManager.ConnectionStrings[“AssociatedBankConnectionString”].ToString(); SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(“uspInsertPersonalAccountApplication”, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(“@AccountType”, “Savings”); cmd.Parameters.AddWithValue(“@AccountSubType”, “Savings”); cmd.Parameters.AddWithValue(“@ExistingCustomer”,”No”); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); }

调用CLR存储过程

简而言之,在哪里可以找到C#/ VB客户端示例代码,它使用某些argumnet [如sqlxml数据]调用CLR存储过程并接收datareader或其他forms的结果? 另外,我如何定期从通过SQlContext.Pipe.Send()方法发送的正在运行的CLR存储过程中接收信息?

在edmx文件中手动添加存储过程

是否可以在edmx文件中持久添加手动添加的存储过程? 数据库是从模型生成的。 每次我在edmx文件中的编辑器中更改某些内容时,存储过程都会丢失。 之后只有FunctionImport条目可用。 示例函数如下所示: 相应的FunctionImportMapping: FunctionImport:

TransactionScope maximumTimeout

我在这段代码中使用TransactionScope: private void ExecuteSP() { bool IsComplete = false; SqlCommand sqlComm = null; //6 hours!!! TimeSpan ts1 = new TimeSpan(6, 0, 0); try { using (TransactionScope t = new TransactionScope(TransactionScopeOption.RequiresNew, ts1)) { using (SqlConnection sqlConn = new SqlConnection(GetConnectionString())) { //open sql connection sqlConn.Open(); try { //create new sqlCommand sqlComm = new SqlCommand(); for (int i […]

在实体Framework Core中执行存储过程而不期望映射到dbset

我正在研究.NET CORE,Entity Framework核心。 我有需要从.NET类执行的存储过程。 我的存储过程需要多个’Context’,我不知道如何处理这个,虽然我有dataView,这是最后的例外。 我是否可以使用我的dataView而不是context.dataModel类,当前实现(Context.Claims.FromSql) 数据视图 public class ClaimDataView { public Guid ClaimId { get; set; } public int IdNum { get; set; } public string Value { get; set; } public DateTime ExpirationDate { get; set; } public ClaimAttributionActions Action { get; set; } public bool ActiveStateForRole { get; set; } } 存储过程调用 […]

通过C#中调用的存储过程将Bytearray插入SQL

首先,我尝试了一切,并且无法理解为什么它不能正确更新我的varbinary字段。 在1728字节中,只有字节数组中的最后一个字节保存到字段中… 我生成我的字节数组如下: public static byte[] StringToByteArray(String hex) { int NumberChars = hex.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); return bytes; } 我也试过以下一个: public static byte[] ParseHex(string hex) { int offset = hex.StartsWith(“0x”) ? 2 : […]

如何处理多个ResultSet,每个ResultSet有多个行? IDataReader.NextResult()结束Read()

如何处理多个ResultSet,每个ResultSet有多个行? 对NextResult()的调用打破了while循环。 我的一些SP返回多个ResultSet。 我正在使用NextResult()处理这些,但是当我这样做并且我的SP只有一个ResultSet时,我看到带有Read()的while循环完成后只剩下第一行。 如果没有调用NextResult()我会得到第一个ResultSet的所有行,但当然第二个和后续的ResultSet不会得到处理? using (IDataReader reader = storedProcedure.ExecuteReader( CommandBehavior.CloseConnection, parameterNames as string[], arguments)) { while (reader.Read()) { ArrayList row = new ArrayList(); for (int j = 0; j < reader.FieldCount; ++j) { object rowValue = reader.GetValue(j); row.Add(rowValue); } reader.NextResult();//next resultset, breaks out of the while } }

如何从Dapper查询而不是默认(T)返回null?

我正在使用Dapper通过存储过程进行一些只读数据库调用。 我有一个查询将返回1行或没有。 我正在使用这样的Dapper: using (var conn = new SqlConnection(ConnectionString)) { conn.Open(); return conn.Query(“API.GetCaseOfficer”, new { Reference = reference }, commandType: CommandType.StoredProcedure).FirstOrDefault(); } 返回的CaseOfficer对象如下所示: public class CaseOfficer { public string Title { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } […]