在我的一个项目中,EF 5.0在abcModel.tt下为我生成POCO实体,这很好,因为我可以在我的项目中使用这些实体,但如果我在其中应用验证,那么当我从DB更新.edmx时它会丢失。所以作为一个解决方案,我也手工构建所有实体
由EF POCO生成的Student.cs MyStudent.cs由我生成
构建MyStudent.cs的另一个原因是DB列名称不太好 例如写的
按EF生成
Student.cs
{
public int sid; // not good name due to table column name
public string sfname; // not good name due to table column name
public string slname; // not good name due to table column name
}
由我建造
MyStudent.cs
{
public int StudentId;
public string FirstName;
public string LastName;
}
所以我想知道我的方法是否有双实体可以吗?
注意:
由于
答案 0 :(得分:0)
当然,你可以这样做。我建议创建一个数据传输库并映射您的对象(如使用AutoMapper)。然后,当您需要从数据库检索数据或从数据库保存数据时,请调用您的DT并返回业务对象(您的其他类)。
这样的事情:
public class StudentDT
{
public StudentBO GetStudent(int id)
{
using (var db = new dbContext())
{
var studentDB = db.Students.First(s => s.sid == id);
StudentBO sbo = Mapper.Map<StudentBO>(studentDB);
return sbo;
}
}
public void SaveStudent(StudentBO sbo)
{
using (var db = new dbContext())
{
var sdb = Mapper.Map<Student>(sbo);
db.Students.Add(sdb);
db.SaveChanges();
}
}
}