【发布时间】:2019-03-03 07:25:30
【问题描述】:
所以,我正在尝试更新 LOGIN 为 NULL 且 ID = 1 的行。如果没有具有这些参数的行,则添加新行。我使用 attach 在 1-2 个查询中进行此操作,因此我试图先避免 SELECT 然后更新。
NULL 值的问题。 EF 只是忽略 LOGIN,因为它具有空值,但是我只需要找到 LOGIN 为 NULL 的行。我可以在没有额外的 SELECT 查询的情况下解决这个问题吗?
我的代码:
using (var db = new EntityContext())
{
var ent = new Entity { ID = 1, LOGIN = null };
db.Entities.Attach(ent);
ent.LOGIN = "Whatever";
ent.EMAIL = "Whatever";
int count = db.SaveChanges();
if (count == 0)
{
var clone_ent = new Entity { LOGIN = "Whatever", PASS = "Whatever" };
db.Entities.Add(clone_ent);
db.SaveChanges();
}
}
SQL 类比:
UPDATE Entities SET LOGIN = @LOGIN, EMAIL = @EMAIL
WHERE ID = 1 AND LOGIN IS NULL
IF @@ROWCOUNT = 0
INSERT INTO Entities (LOGIN, EMAIL)
VALUES @LOGIN, @EMAIL
【问题讨论】:
标签: c# sql entity-framework