LinqDataSource与datetime一起用出现"System.Data.Linq.ChangeConflictException: Row not found or changed"
表结构:
Aspx:
每次试图更新时都会抛出ChangeConflictException异常.
奇怪的是如果把第二个列换成除datetime以外的类型,比如int, nvarchar等都能正常工作; 而Northwind里同样包含datetime列的Orders表也没有问题.
已经证实了这个问题与Id列是否自增,datetime列是否可为空,是否有默认值无关--无论任何情况下都会出现.
这个是bug,还是我忘了哪一步?
CREATE TABLE [dbo].[Table1](
[Id] [int] NOT NULL,
[TimeCreated] [datetime] NOT NULL,
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
insert into table1(id, timecreated) values(1, getdate())
[Id] [int] NOT NULL,
[TimeCreated] [datetime] NOT NULL,
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
insert into table1(id, timecreated) values(1, getdate())
Aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Cus.aspx.cs"
Inherits="RfqMan4.Cus" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataSourceID="LinqDataSource1" DataKeyNames="id">
<columns>
<asp:commandfield ShowEditButton="True"></
asp:commandfield>
<asp:boundfield DataField="id" HeaderText="id"
ReadOnly="True"
SortExpression="id"></asp:boundfield>
<asp:boundfield DataField="TimeCreated"
HeaderText="TimeCreated"
SortExpression="TimeCreated"></asp:boundfield>
</columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="RfqMan4.Components.RfqManDataContext"
EnableDelete="True"
EnableInsert="True" EnableUpdate="True"
TableName="Table1s">
</asp:LinqDataSource>
</div>
</form>
</body>
</html>
Inherits="RfqMan4.Cus" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataSourceID="LinqDataSource1" DataKeyNames="id">
<columns>
<asp:commandfield ShowEditButton="True"></
asp:commandfield>
<asp:boundfield DataField="id" HeaderText="id"
ReadOnly="True"
SortExpression="id"></asp:boundfield>
<asp:boundfield DataField="TimeCreated"
HeaderText="TimeCreated"
SortExpression="TimeCreated"></asp:boundfield>
</columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="RfqMan4.Components.RfqManDataContext"
EnableDelete="True"
EnableInsert="True" EnableUpdate="True"
TableName="Table1s">
</asp:LinqDataSource>
</div>
</form>
</body>
</html>
每次试图更新时都会抛出ChangeConflictException异常.
奇怪的是如果把第二个列换成除datetime以外的类型,比如int, nvarchar等都能正常工作; 而Northwind里同样包含datetime列的Orders表也没有问题.
已经证实了这个问题与Id列是否自增,datetime列是否可为空,是否有默认值无关--无论任何情况下都会出现.
这个是bug,还是我忘了哪一步?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~