Ame*_*ani 5 c# linq asp.net entity-framework
我正在使用EntityFramework(EF V6)与Asp.Net创建一个网站,因为我创建了.edmx和.tt以及DBContext.
我正在尝试为每个表创建一个对象,以便稍后用aspx召唤它
我不知道我是否以正确的方式编写LINQ查询!这就是为什么我需要你的帮助.
表我正试图在这张图片中为它建立一个LINQ对象:

我创建的这个对象类:
public class LINQSubjects
{
NewsPaperEntities ctx = new NewsPaperEntities();
// Get Subject
public Subject GetSubject(int SubjectID)
{
Subject sub = ctx.Subjects.FirstOrDefault(s=> s.Subject_ID==SubjectID);
return sub;
}
// Get All Subject Info
public List<Subject> GetAllSubjects()
{
List<Subject> sublist = (from s in ctx.Subjects select s).ToList<Subject>();
return sublist;
}
// Insert a Subject
public void AddSubject(Subject Addsub)
{
ctx.Subjects.Add(Addsub);
ctx.SaveChanges();
}
// Delete a Subject
public void DeleteSubject(int SubjectID)
{
Subject sub = ctx.Subjects.FirstOrDefault(s => s.Subject_ID == SubjectID);
ctx.Subjects.Remove(sub);
ctx.SaveChanges();
}
// Edit a Subject
public void UpdateSubject(Subject Newsub)
{
Subject Oldsub = ctx.Subjects.FirstOrDefault(s => s.Subject_ID == Newsub.Subject_ID);
Oldsub = Newsub;
ctx.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
是对还是错?
这些是我唯一会改变的方法,其余的看起来都是正确的。
更新:
public List<Subject> GetAllSubjects()
{
List<Subject> sublist = ctx.Subjects.ToList();
return sublist;
}
public void DeleteSubject(int SubjectID)
{
Subject sub = ctx.Subjects.FirstOrDefault(s => s.Subject_ID == SubjectID);
if(sub!=null)//FirstorDefault can return null
{
ctx.Subjects.Remove(sub);
ctx.SaveChanges();
}
}
//This is with the assumption that the parameter Newsub is attached to the context already.
//As in you got the sub from the context then changed it then passed it into UpdateSubject
public void UpdateSubject(Subject Newsub)
{
Subject Oldsub = ctx.Subjects.FirstOrDefault(s => s.Subject_ID == Newsub.Subject_ID);
if(Oldsub !=null)//FirstorDefault can return null
{
Oldsub = Newsub;
//If Newsub is not attached you have to set manually set each property.
//i.e.Oldsub.Name = Newsub.Name;
ctx.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)