Entity Framework - 解释我的代码
Entity Framework - explain my code
这是对这段代码作用的正确理解吗?它是否是更新 URLPath
为 url
的行的正确方法,以便 IsInProcessing
列是true
?
我还没有真正尝试过这段代码。在我这样做之前,我想尝试了解它!它是从各种来源拼凑而成的。
代码:
using(var db = new DamoclesEntities())
{
var urls = db.URLS;
var result = urls.FirstOrDefault(u => u.URLPath == url);
result.IsInProcessingQueue = true;
db.SaveChanges();
}
- 我认为这里发生的是在使用中我将
DamoclesEntities()
class 实例化为 var db
.
- 然后我将
db.URLS
(class / table) 实例化为 var urls
。
- 然后我找到
URLPath
(列)包含 url
的第一行,并将该行分配给 result
。
- 我将该行的
IsInProcessingQueue
(列值)更改为 true
;
- 最后,我将更改保存到数据库。
这几乎是正确的,但请记住,如果没有按指定条件找到的行,FirstOrDefault 将 return 为空值 - URLPath == url
.
所以在这种情况下,下一行将产生 NullReferenceException。
只需添加检查 result
是否为 null 并仅在 result != null
时执行 result.IsInProcessingQueue = true;db.SaveChanges();
这是对这段代码作用的正确理解吗?它是否是更新 URLPath
为 url
的行的正确方法,以便 IsInProcessing
列是true
?
我还没有真正尝试过这段代码。在我这样做之前,我想尝试了解它!它是从各种来源拼凑而成的。
代码:
using(var db = new DamoclesEntities())
{
var urls = db.URLS;
var result = urls.FirstOrDefault(u => u.URLPath == url);
result.IsInProcessingQueue = true;
db.SaveChanges();
}
- 我认为这里发生的是在使用中我将
DamoclesEntities()
class 实例化为var db
. - 然后我将
db.URLS
(class / table) 实例化为var urls
。 - 然后我找到
URLPath
(列)包含url
的第一行,并将该行分配给result
。 - 我将该行的
IsInProcessingQueue
(列值)更改为true
; - 最后,我将更改保存到数据库。
这几乎是正确的,但请记住,如果没有按指定条件找到的行,FirstOrDefault 将 return 为空值 - URLPath == url
.
所以在这种情况下,下一行将产生 NullReferenceException。
只需添加检查 result
是否为 null 并仅在 result != null
result.IsInProcessingQueue = true;db.SaveChanges();