数据库中的多对多首先采用mvc crud操作



如何在mvc数据库优先方法中使用多对多关系。我在sql中有以下表格结构

表1:studentMaster表2:-受试者

我的Model1.edmx和sql表结构图片在这里

http://geeksprogrammings.blogspot.com/2014/04/blog-post.html

我知道如何使用DAtabase First方法使用实体框架执行CRUD操作,但知道如何在表具有多对多关系时执行CRUD操作。我也提出了关于代码项目的问题,但没有给适当的帮助

如果不使用任何类型的IRepository模式:

创建

添加科目为的新学生

using(var dbContext = new Model1Entitites()){
  var student = new Student{details..};
  student.Add(new Subject{});
  dbContext.Students.Add(student);
  dbContext.SaveChanges();
}

更新向现有学生添加科目

using(var dbContext = new Model1Entities()){
    objectToAddTo = dbContext.studentMaster.SingleOrDefault(x=> x.id == id);
    objectToAddTo.Subjects.Add(new Subject{});
    dbContext.SaveChanges();
}

将现有科目添加到现有学生

var student = db.Students.FirstOrDefault(x=> x.Id == id);
var subjectToAdd = db.Subjects.FirstOrDefault(x=> x.id == SubjectId);
if(student!= null){
    if(subjectToAdd != null){
       student.Subjects.Add(subjectToAdd);
    }
}
db.SaveChanges();

从学生中删除主题

using(var dbContext = new Model1Entities()){
    objectToRemoveFrom = dbContext.studentMaster.SingleOrDefault(x=> x.id == id);
    var subjectToRemove = dbContext.Subjects.SingleOrDefault(x=> x.subjectid==subjectid);
    objectToRemoveFrom.Subjects.Remove(subject);
    dbContext.SaveChanges();
}  

选择

using(var dbContext = new Model1Entities()){
    return dbContext.Students.Include(x=> x.Subjects);
}

若要以其他方式添加多个连接,请对其他对象执行相同操作。

处理连接时返回要查看的内容

由于剃刀并不总是乐于获得包含连接实体的实体,因此您可能应该为视图创建一个新模型,而不是使用实体代理。

控制器

var model = new StudentModel();
var student = db.Students.Include(x=> x.Subjects);
//here you can use example AutoMapper, or you can do it manually
model.Id = student.id;
model.Name = student.Name;
model.Subjects = db.Students.Subjects.Select(x=> new SubjectModel{Id = x.Id, Name = x.Name}).ToList();
return View(model);

ViewModel

public class StudentModel{
   public int Id{get;set;}
   public string Name{get;set;}
   public List<SubjectModel> Subjects{get;set;}
}
public class SubjectModel{
    public int Id{get;set;}
    public string Name{get;set;}
}

剃刀

@model StudentModel;
<span>Student name @Model.Name</span>
<ul>
    @foreach(var subject in Model.Subjects){
       <li id="@subject.Id">@subject.Name</li>
    }
<ul>

相关内容

  • 没有找到相关文章

最新更新