Tag: 存储过程

尝试从存储过程读取多列实体结果集时出现问题

我们使用EF5.0和代码优先的方法与MS SQL Server我读了一篇文章http://msdn.microsoft.com/en-us/data/jj691402.aspx 并决定在我们的数据库上尝试相同的方法 但是,假设我的商店程序包含这样的查询 SELECT * from [dbo].[MyEntities] as MyEntity where ID = @ID 和C#中的代码是 var entities = Context.ObjectContext.Translate(reader, “MyEntity”, MergeOption.AppendOnly); 我正在这一点上 System.Data.Entity.dll中出现“System.InvalidOperationException”类型的exception,但未在用户代码中处理 其他信息:找不到EntitySet名称“MyDbContext.MyEntity”。 因此,显然它会添加一些上下文名称作为EntitySet名称的前缀,而不是MyEntity在结果集中查找MyDbContext.MyEntity。 导致此行为的原因以及是否存在任何workaroud(因为在上面引用的示例中,它看起来相当简单且不需要特定的操作,除了调用db.Database.Initialize(force:false);(我在我的代码中执行以及)

无法将参数值从String转换为Decimal?

我有一个这样的存储过程: ALTER PROCEDURE [dbo].[usp_CSR_UpdateDailyCustomerWithLCDHistory] — Add the parameters for the stored procedure here @person_id numeric(18, 0), @last_contact_date datetime, @source nvarchar(50), @callLogId int, @createdBy nvarchar(50) AS BEGIN…END 在我的代码中,我调用此存储过程: public void UpdateDailyCustomerWithLCDHistory(string callerId, int callLogId, string csrName) { try { Database db = DatabaseFactory.CreateDatabase (“MarketingWriteConnectionString”); DbCommand dbCommand = db.GetStoredProcCommand(“usp_CSR_UpdateDailyCustomerWithLCDHistory”); dbCommand.CommandTimeout = AppSetting.Instance.GetCommandTimeout(); db.AddInParameter(dbCommand, “person_id”, DbType.Decimal, callerId); db.AddInParameter(dbCommand, […]

何时使用存储过程而不是将任何ORM与编程逻辑一起使用?

大家好我想知道什么时候我更喜欢编写存储过程来编写编程逻辑并使用ORM或其他东西来提取数据。

将数据插入到具有最佳性能的SQL Server中

我有一个密集使用DB(SQL Server)的应用程序。 因为它必须具有高性能,所以我想知道从执行时间的角度将记录插入DB.Fastest的最快方法。 我该怎么用? 据我所知,最快的方法是创建存储过程并从代码中调用它(ADO.NET)。 请让我知道有没有更好的方法,或者可能有其他一些提高性能的做法。

处理entity framework中的存储过程

如何处理在Entity Framwork中返回不同输出的存储过程。 例如,在sp上,有条件和条件。 if condition返回整数,否则condition返回datatable。 如何使用entity framework处理这个与请建议。

在T-SQL中处理来自CLR存储过程的多个结果

我有一些用C#编写的复杂算法作为CLR存储过程。 程序不是确定性的(取决于当前时间)。 程序的结果是两个表。 我没有找到任何解决方案如何处理T-SQL中存储过程的多结果。 这个过程的性能是关键(程序每隔约2秒调用一次)。 我发现更新表的最快方法是: UPDATE [db-table] SET … SELECT * FROM [clr-func] 它比通过ADO.NET从CLR过程更新db-table快得多。 我使用静态字段来存储结果,并在执行clr存储过程后查询它。 调用堆栈是: T-SQL proc -> CLR proc (MyStoredProcedure) -> T-SQL proc (UpdateDataFromMyStoredProcedure) -> CLR func (GetFirstResultOfMyStoredProcedure) -> CLR func (GetSecondResultOfMyStoredProcedure) 问题是,有时CLR函数在静态字段result空,但在CLR过程中result不为null。 我发现,有时CLR函数在另一个AppDomain中被调用而不是CLR过程。 但是,CLR过程仍在运行,可以执行下一个操作,不会抛出任何exception。 有没有办法,如何强制CLR函数在同一个AppDomain中作为“父”CLR程序调用? 或者是否有其他方式,如何实现我的意图? PS:最初复杂的算法是用T-SQL编写的,但性能很差(比C#中的算法慢约100倍)。 谢谢! 简化代码: // T-SQL CREATE PROC [dbo].[UpdateDataFromMyStoredProcedure] AS BEGIN UPDATE [dbo].[tblObject] SET … SELECT […]

entity framework:如何检测数据库的外部更改

我有一个存储过程,可以更改数据库中的大量数据。 从应用程序调用此存储过程,同时使用EF进行数据操作。 所以我单击一个按钮,存储过程在数据库中运行,数据被更改,EF显示旧数据给用户。 有没有办法强制DbContext或ObjectContext刷新数据库中的数据? ObjectContext.Refresh()可能是解决方案,但我不想为每个可能更改的表调用此方法。 我希望一次性刷新所有表格。 我正在使用Entity Framework 5,面向.NET 4.0 编辑:已添加数据,但EF不反映现有数据的修改。 我看到新添加的记录,但我看不到我对现有记录所做的更改。

例外:使用Entity框架ExecuteStoreQuery函数执行Insert Stored Procedure

我试图使用Entity Framework ExecuteStoreQuery通过存储过程插入数据。 我的过程返回标识作为输出参数。 我的存储过程: CREATE PROCEDURE [dbo].[Insert_Department] @Department NVARCHAR(100), @new_identity INT OUTPUT AS BEGIN SET NOCOUNT ON INSERT INTO [Department](Department) VALUES (@Department) SELECT @new_identity = SCOPE_IDENTITY() SELECT @new_identity AS Id RETURN END 资源 class Program { static void Main(string[] args) { using (var initializeDbContext=new InitializeDbContext()) { var name = new object[] { new SqlParameter(“@Department”, […]

如何在特定时间通过C#运行SQL存储过程?

我现在正在为图书馆建立一个网站,如果有人需要在接下来的五天内退回书籍并通过电子邮件向他们发送提醒,我需要每天同时查看。 我的问题是这样做的正确方法是什么? 我需要完成的是当特定时间到来时,我需要运行一个sql存储过程并通过visual studio 2010或任何其他方式检查存储过程是否已返回我需要发送电子邮件的任何结果。 有没有办法可以在C#上不断检查系统时间而不是触发事件?

将值传递给一个表并在父表中更新

我有两张桌子。 dbo.Emp EmpID(PK)| 名称| typeid的(FK) dbo.EmpType TypeID(PK)| 类型 TypeID:仅在dbo.EmpType中自动增量 当我在Emptype中更新TypeID的值时,它需要存储在dbo的TypeID中.Emp我使用的SP不起作用。 Create Procedure bridge_Type( @EmpID INT, @Name varchar(50), @Mob2 numeric(10,0), @Email varchar(50), @Type varchar(50) ) AS DECLARE @TYPEID int Set NOCOUNT OFF BEGIN TRANSACTION Insert into dbo.Emp VALUES (@EmpID, @Name, @Mob2, @Email, @TYPEID) IF @@ERROR 0 BEGIN ROLLBACK RETURN END INSERT INTO dbo.EmpType VALUES (@Type) IF […]