C# Linq到SQL更新数据
我刚刚开始使用LINQtoSQL进行数据访问。对于只读,它可以正常工作。但它不适用于更新。我已经在几个论坛上阅读了这些帖子。很明显,我的案例中的匿名类型var无法更新。我找不到应该用什么替换var以及在哪里找到它。我将感谢任何帮助 下面是代码。例外是 错误1属性或索引器“AnonymousType1.date\u last\u logon”无法分配给-它是只读的C# Linq到SQL更新数据,c#,asp.net,database,linq-to-sql,C#,Asp.net,Database,Linq To Sql,我刚刚开始使用LINQtoSQL进行数据访问。对于只读,它可以正常工作。但它不适用于更新。我已经在几个论坛上阅读了这些帖子。很明显,我的案例中的匿名类型var无法更新。我找不到应该用什么替换var以及在哪里找到它。我将感谢任何帮助 下面是代码。例外是 错误1属性或索引器“AnonymousType1.date\u last\u logon”无法分配给-它是只读的 为了更新数据,不能使用匿名类型。 相反,您可以使用select u结束查询;选择实际实体。任何ORM工具都是如此;如果要执行CRUD操
为了更新数据,不能使用匿名类型。
相反,您可以使用select u结束查询;选择实际实体。任何ORM工具都是如此;如果要执行CRUD操作,则在生成.dbml文件时,必须使用LINQ to SQL为您生成的实体类型 另外,请注意,您的查询被执行了两次,并且不是同时安全的;调用Count使用数据库中的Count聚合执行查询,然后循环执行查询,这次返回结果。考虑到您正在做的事情,这可能会更好:
var users = (from u in db.FMCSA_USERs
where u.USER_NAME == pName && u.ACTIVE == true
select u).ToList(); // This executes the query and materializes
// the results into a List<FMCSA_USER>
if (users.Count == 0) return null;
foreach (var user in users)
{
user.date_last_logon = user.date_current_logon;
}
db.SaveChanges();
您尝试使用LINQ更新的表应具有主键 +1。我不知道那次否决票是从哪里来的,但这是完全正确的。
var users = (from u in db.FMCSA_USERs
where u.USER_NAME == pName && u.ACTIVE == true
select u).ToList(); // This executes the query and materializes
// the results into a List<FMCSA_USER>
if (users.Count == 0) return null;
foreach (var user in users)
{
user.date_last_logon = user.date_current_logon;
}
db.SaveChanges();