使用Entity Framework DataLayer Repository Add()函数的新记录

时间:2014-04-02 20:56:53

标签: c# asp.net-mvc asp.net-mvc-3 entity-framework asp.net-mvc-4

我是Entity Framework和ASP.NET MVC的初学者,并从在线教程中学习它,我首先创建了一个类库数据层(Student.DataLayer),其中我有一个Repository.cs,我有所有功能,如

protected readonly ObjectContext _connection;
public Repository(IConnectionHelper connection)
{
    _connection = connection.Connection;
}

public virtual ObjectSet<T> ObjectSet
{
    get
    {
        return

        _connection.CreateObjectSet<T>();
    }
}

public virtual T Get(Expression<Func<T, bool>> predicate)
{
    return ObjectSet.FirstOrDefault(predicate);
}

    public virtual T Add(T entity)
    {
        ObjectSet.AddObject(entity);
        Save();
        return entity;
    }

    public virtual void Save()
    {
        _connection.SaveChanges();

     }

IRepository.cs我有

public interface IRepository<T> where T : class
{
    T Get(Expression<Func<T, bool>> predicate);
    T Add(T entity);
    void Save();
}

现在我在主要的ASP.NET MVC3项目Student.Datalayer中添加了Student的引用,所以我现在可以访问datalayer的所有函数。

我在数据库中有一个名为Student的表,它只有student_idstudent_first_name以及student_last_name

到目前为止,我已设法更新已添加的模型中的记录

    public bool update_name(int id, string newfirstname, string newlastname)
    {
        var stud = _stu.Get(p => p.student_id == id);
         stud.student_first_name = newfirstname;
         stud.student_last_name = newlastname;
        _stu.Save();
        return true;
    }

但如何使用_stu.Add()在表格中添加新记录,我无法弄清楚这一点。我在尝试如下。

    public bool add_Student(string firstname, string lastname)
    {
       _stu.Add( //what to do here
       return true;
    }

我真的很想知道这种方式,因为使用像这种方法的数据层,它非常干净。所以请帮帮我

1 个答案:

答案 0 :(得分:3)

您拥有的add_Student()函数没有依赖关系,即没有参数。我假设您需要一些参数,如学生姓名,电子邮件地址等等。

然后用它来创建一个新学生:

public bool add_Student(string firstname, string lastname)
{
    //Requires code to get the new ID, 
    //unless your ObjectSet classes creates the ID automatically.
    int newStudentID = 1; 

    var s = new StudentObject() 
    {
        id = newStudentID, //may not need to be here
        FirstName = firstname,
        LastName = lastname
    };

    _stu.Add(s)
    return true;
}