我是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_id
和student_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;
}
我真的很想知道这种方式,因为使用像这种方法的数据层,它非常干净。所以请帮帮我
答案 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;
}