相关疑难解决方法(0)

在没有先查询的情况下更新记录?

让我们说我查询数据库并加载项目列表.然后我打开详细视图表单中的一个项目,而不是从数据库中重新查询该项目,我从列表中的数据源创建项目的实例.

有没有办法可以更新数据库记录而无需获取单个项目的记录?

以下是我现在正在做的一个示例:

dataItem itemToUpdate = (from t in dataEntity.items
                                 where t.id == id
                                 select t).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

然后在拉动记录后,我更新项目中的一些值并将记录推回:

itemToUpdate.itemstatus = newStatus;
dataEntity.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我认为有更好的方法可以做到这一点,任何想法?

c# entity-framework

90
推荐指数
6
解决办法
6万
查看次数

使用带参数的Database.ExecuteSqlCommand的正确语法是什么?

我使用Entity Framework 4.2并希望调用具有输入参数的存储过程.我正在使用Database.ExecuteSqlCommand调用存储过程.

但是,为了正确映射参数,文档缺少正确的调用语法.我的google-foo让我失望,任何帮助都将受到赞赏.

即我有一个程序

procedure SetElementFrequency
  @ElementTypeID integer,
  @Frequency float
as ...
Run Code Online (Sandbox Code Playgroud)

我试过用它来试试

Database.ExecuteSqlCommand("exec SetElementFrequency @p0 @p1", 
                            elementType, frequency);
Run Code Online (Sandbox Code Playgroud)

Database.ExecuteSqlCommand("exec SetElementFrequency {0} {1}", 
                            elementType, frequency);
Run Code Online (Sandbox Code Playgroud)

但他们都失败了错误语法'@ p1'附近的错误语法.

sql sql-server entity-framework

10
推荐指数
1
解决办法
2万
查看次数

如何使用变量更改sql登录密码

我正在尝试使用Alter LOGIN更新现有SQL登录的密码

我知道以下工作

ALTER LOGIN [username1] WITH PASSWORD = 'somenewpassword123';
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用局部变量时

DECLARE @newpass nvarchar(max);
SET @newpass = 'P@ssw0rd12345';
ALTER LOGIN [username1] WITH PASSWORD = @newpass;
Run Code Online (Sandbox Code Playgroud)

这失败了.向变量中添加[]括号似乎在SSMS查询编辑器中解决了这个问题,但是在C#中使用此编程方式写出查询它失败,因为上述语句具有相同的错误(PASSWORD语法错误)

c#app中的代码

public static int UpdateSqlLoginPassword(DbContext context, string loginName, string password)
{
 try
 {
  string updatePassword =
         @"  SET NOCOUNT ON
          DECLARE @loginName AS nvarchar(max) = {0}
          DECLARE @password AS nvarchar(max) = {1}
          EXEC('
          USE master
          ALTER LOGIN ['+ @loginName + '] WITH PASSWORD = ['+ @password + ']
          ')";
  return context.Database.ExecuteSqlCommand(updatePassword, loginName, password);
 } …
Run Code Online (Sandbox Code Playgroud)

c# sql-server

4
推荐指数
1
解决办法
6496
查看次数

ObjectContext.ExecuteStoreCommand无法识别参数

我在这做错了什么?

...
using (var ctx = ObjectContextManager<MyDataContext>.GetManager("MyDataContext"))
{
    var idsToUpdate = "2,3";

    var parameters = new[]
    {
         new SqlParameter("DesiredEndDate", SqlDbType.DateTime).Value = newUpperLimit,
         new SqlParameter("TasksToUpdate", SqlDbType.NVarChar).Value = idsToUpdate
    };

    ctx.ObjectContext.ExecuteStoreCommand("UPDATE dbo.Tasks SET DesiredEndDate = @DesiredEndDate WHERE Id IN (SELECT Id FROM dbo.fn_Split(@TasksToUpdate, N','))", parameters);

    ctx.ObjectContext.SaveChanges();
}
...
Run Code Online (Sandbox Code Playgroud)

我收到了错误

必须声明标量变量"@DesiredEndDate".

必须声明标量变量"@TasksToUpdate".

但我看不出我的代码有什么问题:/

c# sql-server entity-framework

2
推荐指数
1
解决办法
8868
查看次数

标签 统计

c# ×3

entity-framework ×3

sql-server ×3

sql ×1