Bob*_*one 2 c# database asp.net linq-to-sql
我刚刚开始使用linq to sql进行数据访问.它只适用于只读.但它不适用于更新.我一直在阅读几个论坛的主题.很明显,无法更新匿名类型(在我的情况下为var).我找不到我应该替换var和我找到它的地方.我将不胜感激任何帮助.
下面是代码.例外是
错误1属性或索引器'AnonymousType#1.date_last_logon'无法分配给 - 它是只读的
fmcsaDataContext db = new fmcsaDataContext();
// DataTable _UserTable;
UserModel _UserModel = new UserModel();
var users = from u in db.FMCSA_USERs
where u.USER_NAME == pName && u.ACTIVE == true
select new
{
date_last_logon = u.DATE_LAST_LOGON,
date_current_logon = u.DATE_CURRENT_LOGON,
failed_login = u.FAILED_LOGIN,
};
if (users.Count() == 0)
return null;
foreach (var user in users)
{
user.date_last_logon = user.date_current_logon;
}
Run Code Online (Sandbox Code Playgroud)
任何ORM工具都是这种情况; 如果要执行CRUD操作,则必须使用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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |