- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个帐户实体,除了一个字段外,所有字段都在“UpdateCheck = Never”中。 “ModifiedTime”字段使用“UpdateCheck=Always”。目的是 - 并发检查应仅基于“ModifiedTime”列。
出于测试目的,我提供了用 C# 代码硬编码的“ModifiedTime”值。所以不需要从数据库中获取任何值来实现并发。只有当我调用 Refresh 方法时,代码仍然会更新数据库。这似乎很奇怪。有什么方法可以避免这种情况?
引用:http://msdn.microsoft.com/en-us/library/bb386929.aspx 中的“不查询更新”部分
注意:我试图通过不使用 Refresh 来避免 SELECT 语句
生成的 SQL
SELECT [t0].[AccountNumber], [t0].[AccountType], [t0].[Duration], [t0].[DepositedAmount], [t0].[Prefernce], [t0].[Comment], [t0].[ModifiedTime]
FROM [dbo].[Account] AS [t0]
WHERE [t0].[AccountNumber] = @p0
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
更新查询
UPDATE [dbo].[Account]
SET [AccountType] = @p2, [Duration] = @p3
WHERE ([AccountNumber] = @p0)
AND ([ModifiedTime] = @p1)
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [1]
-- @p1: Input DateTime (Size = -1; Prec = 0; Scale = 0) [6/25/2012 5:08:32 PM]
-- @p2: Input NChar (Size = 10; Prec = 0; Scale = 0) [SUCESS]
-- @p3: Input Int (Size = -1; Prec = 0; Scale = 0) [2]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
表结构
CREATE TABLE [dbo].[Account](
[AccountNumber] [int] NOT NULL,
[AccountType] [nchar](10) NOT NULL,
[Duration] [int] NOT NULL,
[DepositedAmount] [int] NULL,
[Prefernce] [int] NULL,
[Comment] [nvarchar](50) NULL,
[ModifiedTime] [datetime] NOT NULL,
CONSTRAINT [PK_Account] PRIMARY KEY CLUSTERED
(
[AccountNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
C#代码
public virtual void UpdateChangesByAttach(T entity)
{
if (Context.GetTable<T>().GetOriginalEntityState(entity) == null)
{
//If it is not already attached
Context.GetTable<T>().Attach(entity);
Context.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, entity);
}
}
public void UpdateAccount()
{
//Used value from previous select
DateTime previousDateTime = new DateTime(2012, 6, 25, 17, 8, 32, 677);
RepositoryLayer.Account accEntity = new RepositoryLayer.Account();
accEntity.AccountNumber = 1;
accEntity.AccountType = "SUCESS";
accEntity.ModifiedTime = previousDateTime;
accEntity.Duration = 2;
accountRepository.UpdateChangesByAttach(accEntity);
accountRepository.SubmitChanges();
}
表格数据
阅读:
LINQ to SQL: how to update the only field without retrieving whole entity
Default Values (of C# variables) Issue in LINQ to SQL Update
最佳答案
感谢@sgmoore。要更新的值在 Attach 方法之后设置。现在它正在工作。还有什么需要改进的吗?
生成的 SQL
UPDATE [dbo].[Account]
SET [AccountType] = @p2, [Duration] = @p3, [ModifiedTime] = @p4
WHERE ([AccountNumber] = @p0)
AND ([ModifiedTime] = @p1)
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [1]
-- @p1: Input DateTime (Size = -1; Prec = 0; Scale = 0) [6/25/2012 5:08:32 PM]
-- @p2: Input NChar (Size = 10; Prec = 0; Scale = 0) [NEXT]
-- @p3: Input Int (Size = -1; Prec = 0; Scale = 0) [4]
-- @p4: Input DateTime (Size = -1; Prec = 0; Scale = 0) [6/26/2012 10:29:19 AM]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
代码
public void UpdateAccount()
{
//Used value from previous select
DateTime previousDateTime = new DateTime(2012, 6, 25, 17, 8, 32, 677);
RepositoryLayer.Account accEntity = new RepositoryLayer.Account();
accEntity.AccountNumber = 1; //Primary Key
accEntity.ModifiedTime = previousDateTime; //Concurrency column
accountRepository.UpdateChangesByAttach(accEntity);
//Values to be modified after Attach
accEntity.AccountType = "NEXT";
accEntity.ModifiedTime = DateTime.Now;
accEntity.Duration = 4;
accountRepository.SubmitChanges();
}
public virtual void UpdateChangesByAttach(T entity)
{
if (Context.GetTable<T>().GetOriginalEntityState(entity) == null)
{
//If it is not already attached
Context.GetTable<T>().Attach(entity);
}
}
关于c# - LINQ 到 SQL : Updating without Refresh when “UpdateCheck = Never” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189688/
我将异步请求包装在 Combine 发布者中,以便它们可以轻松地跨不同管道使用。 消费者可能会按以下方式保留这些发布者: struct Dependencies { var loadImageRe
{a: never} 似乎可以简化为never。这样做可以解决我下面的问题。这是不可能的吗? type A = {tag: 'A', value: number} type B = {tag: 'B'
我需要一个通用类型,当(此属性的)通用参数为never 时,它从指定类型中排除通用属性。为此,我使用了 Omit 和条件类型。例如,当通用参数设置为 number 时,它的行为符合预期,但当通用类型设
我需要一个通用类型,当(此属性的)通用参数为never 时,它从指定类型中排除通用属性。为此,我使用了 Omit 和条件类型。例如,当通用参数设置为 number 时,它的行为符合预期,但当通用类型设
在我的房间应用程序中,我在 populateDatabase 函数中收到两个警告:参数“pbInfoDao”从未使用过并且变量“pbInfo”从未使用过 Task :app:prepareLintJa
我有一个实例化对象并填充标有自定义属性的字段的工厂。 Resharper 在提示“从未分配字段‘Example’”的字段下方添加绿色下划线。要取消警告,我可以将 MeansImplicitUseAtt
interface modal { name: string; check: boolean; } type Key = "name" | "check"; const obj: mo
我正在学习 Typescript 并按照教程,我编写了以下代码: interface Todo { text: string; completed: boolean; } type State
我在 C# 项目中有一个 HTTPSystemDefinitions.cs 文件,它基本上描述了托管代码使用的旧 Windows ISAPI。 这包括与 ISAPI 相关的完整结构集,但并非全部或由代
我正在尝试替换文件中的一行。 我的问题:我永远无法在文件中找到我要查找的行。我的函数找到了我想要替换的行,但没有正确地将其识别为我想要替换的行,或者它可能无法打开文件(文件路径正确)。 如果您使用以下
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我正在做一个使用Supabase作为后端的Next.js项目。我已经定义了一些帮助器类型来处理来自Supabase查询的响应,但我遇到了一个似乎无法解决的打字问题。。以下是我的帮助器类型以及每种帮助器
Santos Santo ╭ Miss. Miss 冷忆°Conquer Hold on Mr.kai 2yscw丶晴子 trouble (烦恼) never° Pe
我一直在自学正则表达式以获得乐趣,但我在 Regex Golf 中很难超越这个级别。我知道这可以用 $ 来完成,但游戏要求你不要这样做。任何指示或建议? 我试过 ([/w](fu)), [/w][fu
以下 typescript 片段在严格模式下重现了(编译器)问题,编译后的代码运行良好: class ClassX { constructor(public label: string) {}
我已经编写了一种基准测试,用于评估事务属性的不同组合如何影响 Java EE 程序的性能。基准测试从带有“X”注释的方法调用带有“Y”注释的方法。我的基准交易涵盖了银行转账的情况: @Required
这是一个基本用例:用 null 初始化一个变量,然后在某个嵌套循环/函数中更改值: let a: number | null = null; [1].forEach(() => { a = 1;
在 tsconfig.json 中启用了 strict 后,为什么 tsc 在索引 never { console.log(x)); x["hello"] = 123; Expected: an er
Typescript playground 我在试图理解类型 never 的事实时遇到了一些麻烦。没有意义,当它在 中时可以丢弃联合类型 . 我的意思是,我在 中得到了它路口类型 , never将立即
使用 Slick,您可以执行以下操作以从表中生成结果流: val q = for (e println(s"Event: $s") } 这将打印 events 中的所有事件表并在最后一行之后终止。
我是一名优秀的程序员,十分优秀!