我正在使用Entity Framework来填充网格控件.有时当我进行更新时,我收到以下错误:
存储更新,插入或删除语句会影响意外的行数(0).自实体加载后,实体可能已被修改或删除.刷新ObjectStateManager条目.
我无法弄清楚如何重现这一点.但它可能与我进行更新的距离有多大关系.有没有人看过这个或有没有人知道错误信息是指什么?
编辑:不幸的是我不再自由地重现我在这里遇到的问题,因为我离开了这个项目并且不记得我是否最终找到了解决方案,如果另一个开发人员修复它,或者我是否解决了这个问题.因此我不能接受任何答案.
这可能是一个愚蠢的问题,但我似乎无法弄明白.我正在比较两个文件的LastWriteTime,但是它总是失败,因为我从网上下载的文件总是将毫秒设置为0,而我的原始文件有一个实际值.在比较时是否有一种忽略毫秒的简单方法?
这是我的功能:
//compare file's dates
public bool CompareByModifiedDate(string strOrigFile, string strDownloadedFile)
{
DateTime dtOrig = File.GetLastWriteTime(strOrigFile);
DateTime dtNew = File.GetLastWriteTime(strDownloadedFile);
if (dtOrig == dtNew)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有一些用于某些RESTful服务的XSD架构.当与xsd.exe工具结合使用以生成C#代码时,XSD会xs:date生成以下代码:
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")]
public System.DateTime time {
get {
return this.timeField;
}
set {
this.timeField = value;
}
}
Run Code Online (Sandbox Code Playgroud)
将XML反序列化为使用XmlSerializerall的对象似乎很好.我面临的问题是服务要求将日期格式化为YYYY-MM-DD hh:mm:ss,并且XSD生成的代码似乎只生成YYYY-MM-DD.
如果我手动修改XSD以进行xs:dateTime输入,则生成的C#代码会产生:2010-08-20T20:07:03.915039Z.
基本上,我如何强制序列化生成YYYY-MM-DD hh:mm:ss?是否可以对XSD做些什么或者我可以做些什么来改变生成的C#代码?
将DateTime对象修剪为特定精度的最佳方法是什么?例如,如果我的DateTime值为'2008-09-29 09:41:43',但我只想要精确到分钟,有没有更好的方法来做到这一点?
private static DateTime TrimDateToMinute(DateTime date)
{
return new DateTime(
date.Year,
date.Month,
date.Day,
date.Hour,
date.Minute,
0);
}
Run Code Online (Sandbox Code Playgroud)
我真正想要的是让它变量,以便我可以将其精度设置为秒,分钟,小时或日.
我最近遇到了Last-Modified Header.
我想要一个例子,如何将最后修改的头文件包含在mvc项目中,对于静态页面和数据库查询也是如此?
它与outputcache有什么不同,如果是的话怎么样?
基本上,我希望浏览器清除缓存并自动显示最新的数据或页面,而无需用户刷新或清除缓存.
我需要在两个单独的列表中比较日期.每个列表都由MyFile对象构成.这是我创建的一个类,用于获取有关文件的特定信息,例如name,dateModified,extension等.唯一的问题是我的第二个列表中的很多MyFiles对象(从外部硬盘驱动器获取)没有将dateTime标记(LastWriteTime)保留到毫秒.我相信这就是为什么我的比较不起作用的原因.例如,这里是我的比较失败的一个例子:"为什么c#认为日期不相等?"

a和b是MyFile对象,MyFile类包含一个属性ticks,它等于file.LastWriteTime.Ticks它们没有在我刚刚包含它们的程序中用于调试目的.因此,经过多次调试后,我意识到最后7位代表文件的毫秒数.因此,我在MyFile中的ticks属性现在包含11个有效数字而不是18个(注意18-11 = 7).这个问题是,当我比较滴答时,当我尝试通过除以10000000然后多打10000000来更新ticks属性时,我得到奇怪的结果.因为我的ticks propery是一个long int,它将丢失最后7位数当我划分.我得到的'错误'更少.但是有一些其他时候我得到这样的东西:

在这里我们可以看到日期至少相同,直到第二个.为什么c#认为它不是同一个日期?我是否必须创建自己的"Ticks"功能?我知道我将dateTime转换为字符串然后比较它但我想知道一个对象a.dateModified是否比对象b.dateModified更新的可能性
我有一个"要求"给出最接近的第二个时间戳...但不是更准确.舍入或截断时间很好.
我想出了这种可憎的事
dateTime = DateTime.Parse(DateTime.UtcNow.ToString("U"));
Run Code Online (Sandbox Code Playgroud)
(U是长格式的日期和时间."2007年1月3日17:25:30")
是否有一些不那么可怕的方法来实现这一目标?
编辑:所以从链接截断毫秒回答(感谢约翰奥多姆)我将这样做
private static DateTime GetCurrentDateTimeNoMilliseconds()
{
var currentTime = DateTime.UtcNow;
return new DateTime(currentTime.Ticks - (currentTime.Ticks % TimeSpan.TicksPerSecond), currentTime.Kind);
}
Run Code Online (Sandbox Code Playgroud)
几乎不那么可怕..但它确实保留了我所关心的日期时间的"种类".我的解决方案没有.
我的代码在C#.NET中我正在使用Kendo Grid版本2013.2.716.340和服务器绑定来显示网格中的数据.
在Kendo UI Grid中,我有一个dateTime列,但列过滤器输入只有一个日期选择器但没有时间选择器.因此,如果我选择该选项IsEqualTo并给出一个日期,那么我得到零结果,因为时间00:00:00在过滤器中设置,但列有一些时间值.我想添加时间选择器和日期选择器.
我尝试在我的专栏上执行此操作,但它不起作用:
columns.Bound(o => o.Time).Title("Time").Format("{0:MM/dd/yyyy HH:mm:ss}").Filterable(f => f.UI("DateTimeFilter")).Width("5%");
Run Code Online (Sandbox Code Playgroud)
并已应用以下脚本:
<script type="text/javascript">
function DateTimeFilter(control)
{
$(control).kendoDateTimePicker();
}
</script>
Run Code Online (Sandbox Code Playgroud)
上面的代码在我datetime从精选中选择时起作用datetimepicker但在我选择时它不起作用isequalto.例如:如果我datetime在我的剑道网格列中显示"12/21/2013 07:15:45",当我将其复制datetime到isequalto过滤器下的选项时,它不会提供任何数据.
此外,我尝试了此链接提供的示例 它也没有在我的情况下工作.此链接上的示例使用Ajax绑定.我需要在服务器绑定的情况下应用它.
这是附加图像,显示我想要应用的内容.这是图像的链接.如果我将datetime网格中显示的内容复制到过滤器中它应该正确过滤并给出结果.
如果有人能帮助我解决我的问题,我将非常感激.提前致谢.
我正在尝试在oledb(ms访问数据库)中插入一个名为objectdate的字段是日期/时间
我用来添加参数的代码就是这个,但是我收到了错误.
OleDbParameter objectdate = new OleDbParameter("@objectdate", OleDbType.DBDate);
objectdate.Value = DateTime.Now; cmd.Parameters.Add(objectdate);
Run Code Online (Sandbox Code Playgroud)
错误:
条件表达式中的数据类型不匹配.
尝试在Access中插入一行数据时,出现"条件表达式中的数据类型不匹配"错误.搞砸了一下之后,我把它缩小到DateTime就成了问题.
这是我的代码:
class ABGDA
{
private OleDbConnection dbConn;
private OleDbCommand dbCmd;
private OleDbDataReader dbReader;
private string sConnection;
private string sql;
private ABG abg;
public void insertProgressNotes(ABG ABG)
{
abg = ABG;
sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=SimEMR.accdb";
dbConn = new OleDbConnection(sConnection);
dbConn.Open();
sql = "INSERT INTO ABG (AccountNo, LabDate, PAO2, PACO2, SAO2, Bicarbonate, BaseExcess, " +
"O2Setting, SetRate, SetPEEP, FiO2) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
dbCmd = new OleDbCommand();
dbCmd.CommandText = sql;
dbCmd.Connection …Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×4
datetime ×4
c#-4.0 ×2
ms-access ×2
asp.net ×1
asp.net-mvc ×1
kendo-grid ×1
oledb ×1
parameters ×1
winforms ×1