【发布时间】:2017-07-13 14:17:20
【问题描述】:
我想知道为什么它在我下面的代码中返回一个空值:
using (var context = new MusicStoreDBEntities())
{
var bay = (from g in context.stringInstrumentItems
where g.brand.name == name.Text select g)
.FirstOrDefault();
context.stringInstrumentItems.Remove(bay);
context.SaveChanges();
}
var 托架返回 null。我做错了什么?这是我试图将其转换为实体框架的等效原始 sql 查询:
string queryGuitarItems = "DELETE S FROM stringInstrumentItem S JOIN brand B ON S.brandId = B.brandId WHERE B.name = @brand";
using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString()))
{
using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems))
{
connectionGuitarItems.Open();
commandGuitarItems.Connection = connectionGuitarItems;
commandGuitarItems.Parameters.Add(new SqlParameter("@brand", name.Text));
commandGuitarItems.ExecuteNonQuery();
connectionGuitarItems.Close();
commandGuitarItems.Parameters.Clear();
}
}
让我知道这两个查询是否相似。我真的在尝试将所有原始 sql 查询更改为实体框架,这是一个开始。
【问题讨论】:
-
运行 sql-profiler 并查看广告生成的 sql-code
-
FirstOrDefault()如果没有找到符合您条件的内容,则返回 null,您确定您的数据库中有匹配项吗? -
那个 SQL 命令会愉快地“删除” 0 条记录。当找不到匹配项时,您的
FirstOrDefault()可能会返回null。所以检查那个空值。
标签: c# sql asp.net database entity-framework