• ASP.net MVC的EF Codefirst重复的条目

  • 本文关于 c#,asp.net,实体框架entity-framework,EF代码优先ef-code-first,duplicates
  • CodeGo.net > ASP.net MVC的EF Codefirst重复的条目
  •  

    ASP.net MVC的EF Codefirst重复的条目



    c# asp.net 实体框架entity-framework EF代码优先ef-code-first duplicates
    首先:我是很新的MVC和代码优先。 使用MVC 4和EF 5.0 问题: 每当我选择在DropDownList和后提交给Action。 两件事情发生: 被添加到DinnerEvent作为应该: 所选择的用户是重复的,所以,我现在有两个实例在用户数据库中的表。这是不好的。 :( 这里是设置 我已经创建了两个实体: DinnerEvent和用户 该DinnerEvent类有一个导航属性,服务员(用户)的集合
    public virtual ICollection<User> Attendants { get; set; }
    
    我已经创建库为DinnerEvent和用户 该AddAttendantToEvent行动在DinnerEvent控制器
    [HttpPost]
    public ActionResult AddAttendantToEvent(int users , int EventID )
    {
     if (ModelState.IsValid)
     {
      var user = userRepository.Find(users);
      dinnereventRepository.Find(EventID).Attendants.Add(user); //Add the User to the Event.
      dinnereventRepository.Save();
      return RedirectToAction("Index");
     }
     else
     {
      return View();
     }
    }
    
    视图-遍历所有的事件,并添加填充了所有的foreach事件一个DropDownList。
     @model Madklub.Models.ViewModel
     @foreach (var item in Model.events) {
     //Code to display available events
      @using (Html.BeginForm("AddAttendantToEvent", "DinnerEvents")) {
      @Html.Hidden("EventID", item.DinnerEventID);
      @Html.DropDownListFor(m => m.users, new SelectList(Model.users, "UserID", "RoomNumber"));
      <input type="submit" value="Add" />
    }
    
    视图模型:
    public class ViewModel
    {
     public IQueryable<DinnerEvent> events { get; set; }
     public IQueryable<User> users { get; set; }
    }
    
    这是这样的初始化: 在DinnerEventController索引操作:
    public ViewResult Index()
    {
     ViewModel viewdata = new ViewModel();
     viewdata.events = dinnereventRepository.AllIncluding(m => m.Attendants);
     viewdata.users = userRepository.All;
     return View(viewdata);
    }
    
    我究竟做错了什么? 存储库代码的要求: 缩小到只包含Save()方法。 请注意,这是由scaffolding所有自动生成的代码。
    public class DinnerEventRepository : IDinnerEventRepository
    {
     MadklubContext context = new MadklubContext();
     public void Save()
     {
      context.SaveChanges();
     }  
    }
    public class MadklubContext : DbContext
     {  
     public DbSet<Madklub.Models.User> Users { get; set; }
     public DbSet<Madklub.Models.MadklubEvent> MadklubEvents { get; set; }
     }
    

    本文地址 :CodeGo.net/1106195/
    -------------------------------------------------------------------------------------------------------------------------
    1.的工作模式单位:(顺便说一句,让你回购的/ UOW IDisposable接口,因此您可以清理的DbContext实例)
    public class DinnerEventRepository : IDinnerEventRepository
    {
     MadklubContext _context = new MadklubContext();
     public void Save()
     {
      _context.SaveChanges();
     } 
     public DinnerEventRepository( MadklubContext context = null )
     {
      _context = context ?? new MadklubContext();
     }  
    }
    public class UserRepository //: IUserRepository
    {
     MadklubContext _context = new MadklubContext();
     public void Save()
     {
      _context.SaveChanges();
     } 
     public UserRepository( MadklubContext context = null )
     {
      _context = context ?? new MadklubContext();
     }  
    }
    public class RsvpUnitOfWork // come up with a better name
    {
     MadklubContext _context = new MadklubContext();
     public DinnerEventRepository DinnerEventRepo { get; private set; }
     public UserRepository UserRepo { get; private set; }
     public RsvpUnitOfWork()
     {
      DinnerEventRepo = new DinnerEventRepository( _context );
      UserRepo = new UserRepository( _context );
     }
     public void Save()
     {
      _context.SaveChanges();
     }
    }
    
    用法:
    [HttpPost]
    public ActionResult AddAttendantToEvent(int users , int EventID )
    {
     if (ModelState.IsValid)
     {
      // this should be a using statement once you implement IDisposable
      // e.g. using( var uow = new RsvpUnitOfWork() ) { ... }
      var uow = new RsvpUnitOfWork();
      // you need to validate that user != null
      var user = uow.UserRepo.Find(users);
      // possible null reference exception if dinner event not found for EventID
      uow.DinnerEventRepo.Find(EventID).Attendants.Add(user); //Add the User to the Event.
      uow.Save();
      return RedirectToAction("Index");
     }
     else
     {
      return View();
     }
    }
    

    本文标题 :ASP.net MVC的EF Codefirst重复的条目
    本文地址 :CodeGo.net/1106195/
    1. 遇到一个datagrid 的错误....
    2. 为什么TCP网络(接收数据)。net / C#试图接收时抛出一个异常?
    3. 看下字符搜索的代码
    4. ASP.NET按钮事件触发时后退按钮按下
    5. 如何设定DATAGRID的列名,用WINFORM?
    6. 如何解析和替换不正确出世纪的日期值在一个大的csv文件
    7. 又现datagrid问题
    8. 动态库注入失败在某些机器上?
    9. 代码(组件控件)安全问题,集思广益
    10. 如何将内存文件上传到Amazon S3吗? C#

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻