C# 使用linq更新表
我想更新表,但它不工作 代码如下:C# 使用linq更新表,c#,linq,C#,Linq,我想更新表,但它不工作 代码如下: public Boolean setSectionTickSign(decimal Trans_ID, decimal Job_ID, string SectioName) { string sectionames = ""; Transcription_Master Trans_Mastr = new Transcription_Master(); try { var Trans_Master = (from
public Boolean setSectionTickSign(decimal Trans_ID, decimal Job_ID, string SectioName)
{
string sectionames = "";
Transcription_Master Trans_Mastr = new Transcription_Master();
try
{
var Trans_Master = (from Trans_Mast in r2ge.Transcription_Master where Trans_Mast.Transcription_Id == Trans_ID && Trans_Mast.Entity_Id == Job_ID select new
{
Trans_Mast.Completed_Trans_Sections
}).Distinct().ToList();
var complt_trans = Trans_Master.AsEnumerable().Where(dr = > dr.Completed_Trans_Sections != null).ToList();
if (complt_trans.Count == 0)
{
if (sectionames == "")
{
Trans_Mastr.Completed_Trans_Sections = SectioName;
}
}
else
{
Trans_Mastr.Completed_Trans_Sections = "," + SectioName;
}
int sc = r2ge.SaveChanges();
}
}
它不更新数据库。它有什么问题???您应该将这段代码更改为这样的内容:
var Trans_Master = (from Trans_Mast in r2ge.Transcription_Master
where Trans_Mast.Transcription_Id == Trans_ID
&& Trans_Mast.Entity_Id == Job_ID
select Trans_Mast).Distinct().ToList();
在这种情况下,变量Trans_Maser将引用集合中的对象,因此将对从EF上下文中获取的对象进行更改,保存更改将给出正确的结果。解决了我自己的问题
Transcription_Master Trans_Mastr=new Transcription_Master()代码>无需创建新对象
public Boolean setSectionTickSign(decimal Trans_ID, decimal Job_ID, string SectioName)
{
string sectionames = "";
try
{
var empQuery = r2ge.Transcription_Master.Where(l => l.Transcription_Id == Trans_ID && l.Entity_Id == Job_ID).ToList();
foreach (Transcription_Master Trans_Mastrr in empQuery)
{
if (empQuery.Count == 0)
{
if (sectionames == "")
{
Trans_Mastrr.Completed_Trans_Sections = SectioName;
}
}
else
{
Trans_Mastrr.Completed_Trans_Sections = Trans_Mastrr.Completed_Trans_Sections + "," + SectioName;
}
}
int sc = r2ge.SaveChanges();
}
为什么会有这么短的名字?在c语言中,我们没有限制使用短名称,也不会在编译过程中造成任何问题。就个人而言,这真的很难理解,因为我不知道complt\u trans实际上意味着什么。我知道它是完整的还是完整的,甚至是一个汇编?必须深入了解其他代码才能理解变量,这意味着代码不容易维护。您不需要修改r2ge.Transcription\u Master,而是一个新复制的Trans\u Mastr
,那么如何在表@EricIt中进行更改真的很难阅读。查看命名约定。您是否设置了AutoDetectChanges=false?您还有两个名称相同的变量:Transcription\u Master Trans\u Mastr=new Transcription\u Master();为什么要在这里创建新的转录\u Master()?而不是从EF集合中获取?