如何使用Entity Framework为CRUD编写LINQ查询?

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)

是对还是错?

imG*_*reg 3

这些是我唯一会改变的方法,其余的看起来都是正确的。

更新:

    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)