Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 实体框架多对多 公共类项目 { 公共虚拟整数ID{get;set;} [必需] 公共虚拟字符串标题{get;set;} 公共字符串定义{get;set;} 公共日期时间起始日期{get;set;} [必需] public int CreaterID{get;set;} 公共虚拟ICollection状态{get;set;} 公共虚拟ICollection任务{get;set;} 公共虚拟ICollection用户{get;set;} 公共工程() { Users=newhashset(); } } 公共类用户 { 公共int ID{get;set;} [显示名称(“KullanıcıAdı”)] [必需] [MinLength(5,ErrorMessage=“KullanıcıAdıEn Az 5 Karakter Olmalıdır”)] 公共字符串用户名{get;set;} [数据类型(数据类型.密码)] [显示名称(“Şifre”)] [必需] [MinLength(3,ErrorMessage=“ifre En Az 3 Karakter Olmalıdır”)] 公共字符串密码{get;set;} [必需] 公共字符串名称{get;set;} [必需] 公共字符串姓氏{get;set;} public int?CreaterID{get;set;} 公共整数级别{get;set;} 公共ICollection任务{get;set;} 公共ICollection项目{get;set;} 公共用户() { Projects=newhashset(); } } 公共类TaskDB:DbContext { 公共DbSet注释{get;set;} 公共数据库集项目{get;set;} 公共数据库集状态{get;set;} 公共数据库集任务{get;set;} 公共数据库集用户{get;set;} 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { modelBuilder.Entity()。 有许多(c=>c.Users)。 有很多(p=>p.Projects)。 地图( m=> { m、 MapLeftKey(“ProjectId”); m、 MapRightKey(“用户ID”); m、 ToTable(“项目用户”); }); } }_Asp.net Mvc 3_Entity Framework_Entity Relationship - Fatal编程技术网

Asp.net mvc 3 实体框架多对多 公共类项目 { 公共虚拟整数ID{get;set;} [必需] 公共虚拟字符串标题{get;set;} 公共字符串定义{get;set;} 公共日期时间起始日期{get;set;} [必需] public int CreaterID{get;set;} 公共虚拟ICollection状态{get;set;} 公共虚拟ICollection任务{get;set;} 公共虚拟ICollection用户{get;set;} 公共工程() { Users=newhashset(); } } 公共类用户 { 公共int ID{get;set;} [显示名称(“KullanıcıAdı”)] [必需] [MinLength(5,ErrorMessage=“KullanıcıAdıEn Az 5 Karakter Olmalıdır”)] 公共字符串用户名{get;set;} [数据类型(数据类型.密码)] [显示名称(“Şifre”)] [必需] [MinLength(3,ErrorMessage=“ifre En Az 3 Karakter Olmalıdır”)] 公共字符串密码{get;set;} [必需] 公共字符串名称{get;set;} [必需] 公共字符串姓氏{get;set;} public int?CreaterID{get;set;} 公共整数级别{get;set;} 公共ICollection任务{get;set;} 公共ICollection项目{get;set;} 公共用户() { Projects=newhashset(); } } 公共类TaskDB:DbContext { 公共DbSet注释{get;set;} 公共数据库集项目{get;set;} 公共数据库集状态{get;set;} 公共数据库集任务{get;set;} 公共数据库集用户{get;set;} 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { modelBuilder.Entity()。 有许多(c=>c.Users)。 有很多(p=>p.Projects)。 地图( m=> { m、 MapLeftKey(“ProjectId”); m、 MapRightKey(“用户ID”); m、 ToTable(“项目用户”); }); } }

Asp.net mvc 3 实体框架多对多 公共类项目 { 公共虚拟整数ID{get;set;} [必需] 公共虚拟字符串标题{get;set;} 公共字符串定义{get;set;} 公共日期时间起始日期{get;set;} [必需] public int CreaterID{get;set;} 公共虚拟ICollection状态{get;set;} 公共虚拟ICollection任务{get;set;} 公共虚拟ICollection用户{get;set;} 公共工程() { Users=newhashset(); } } 公共类用户 { 公共int ID{get;set;} [显示名称(“KullanıcıAdı”)] [必需] [MinLength(5,ErrorMessage=“KullanıcıAdıEn Az 5 Karakter Olmalıdır”)] 公共字符串用户名{get;set;} [数据类型(数据类型.密码)] [显示名称(“Şifre”)] [必需] [MinLength(3,ErrorMessage=“ifre En Az 3 Karakter Olmalıdır”)] 公共字符串密码{get;set;} [必需] 公共字符串名称{get;set;} [必需] 公共字符串姓氏{get;set;} public int?CreaterID{get;set;} 公共整数级别{get;set;} 公共ICollection任务{get;set;} 公共ICollection项目{get;set;} 公共用户() { Projects=newhashset(); } } 公共类TaskDB:DbContext { 公共DbSet注释{get;set;} 公共数据库集项目{get;set;} 公共数据库集状态{get;set;} 公共数据库集任务{get;set;} 公共数据库集用户{get;set;} 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { modelBuilder.Entity()。 有许多(c=>c.Users)。 有很多(p=>p.Projects)。 地图( m=> { m、 MapLeftKey(“ProjectId”); m、 MapRightKey(“用户ID”); m、 ToTable(“项目用户”); }); } },asp.net-mvc-3,entity-framework,entity-relationship,Asp.net Mvc 3,Entity Framework,Entity Relationship,如果我添加项目,当前用户将添加到项目用户列表中,但项目未添加到当前用户的项目列表中 这是我的项目添加代码 public class Project { public virtual int ID { get; set; } [Required] public virtual String Title { get; set; } public String Definition { get; set; } public DateTime Start

如果我添加项目,当前用户将添加到项目用户列表中,但项目未添加到当前用户的项目列表中 这是我的项目添加代码

public class Project
{


    public virtual int ID { get; set; }

    [Required]
    public virtual String Title { get; set; }


    public String Definition { get; set; }
    public DateTime StartDate { get; set; }


    [Required]
    public int CreaterID { get; set; }

    public virtual ICollection<Status> Status { get; set; }
    public virtual ICollection<Task> Tasks { get; set; }
    public virtual ICollection<User> Users { get; set; }

    public Project()
    {
        Users = new HashSet<User>();
    }


}


public class User
{
    public int ID { get; set; }


    [DisplayName("Kullanıcı Adı")]
    [Required]
    [MinLength(5, ErrorMessage = "Kullanıcı Adı En Az 5 Karakter Olmalıdır")]
    public string username { get; set; }

    [DataType(DataType.Password)]
    [DisplayName("Şifre")]        
    [Required]
    [MinLength(3,ErrorMessage="Şifre En Az  3 Karakter Olmalıdır")]
    public string password { get; set; }

    [Required]
    public String Name { get; set; }

    [Required]
    public String Surname { get; set; }

    public int? CreaterID { get; set; }
    public int level { get; set; }

    public ICollection<Task> Tasks { get; set; }
    public ICollection<Project> Projects { get; set; }

    public User()
    {
        Projects = new HashSet<Project>();
    }
}


public class TaskDB : DbContext
{
    public DbSet<Comment> Comments { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<Situation> Situaitons { get; set; }
    public DbSet<Task> Tasks { get; set; }
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Project>().
          HasMany(c => c.Users).
          WithMany(p => p.Projects).
          Map(
           m =>
           {
               m.MapLeftKey("ProjectId");
               m.MapRightKey("UserId");
               m.ToTable("ProjectUser");
           });
    }

}
[HttpPost]
公共行动结果创建(项目项目、状态)
{
proje.StartDate=DateTime.Now;
proje.Status=newhashset();
var user=_db.Users.Single(r=>r.ID==UserRole.ID);
项目用户.添加(用户);
项目状态。添加(状态);
user.Projects.Add(proje);
if(ModelState.IsValid)
{
var projeler=_db.Projects;
projeler.Add(proje);
_db.SaveChanges();
返回操作(“索引”);
}
返回视图(proje);
}

我搜索这个问题的原因是我没有找到,我想了解为什么实体框架将用户添加到项目列表中,而不是将项目添加到用户列表中

将新项目添加到数据库中的代码看起来是正确的,并且关系很可能已存储

但是,您可能没有使用
用户加载
项目
列表。如果你打电话

[HttpPost]
    public ActionResult Create(Project proje,Status status)
    {

        proje.StartDate = DateTime.Now;
        proje.Status = new HashSet<Status>();
        var user = _db.Users.Single(r=> r.ID == UserRole.ID);
        proje.Users.Add(user);
        proje.Status.Add(status);
        user.Projects.Add(proje);


        if (ModelState.IsValid)
        {
            var projeler = _db.Projects;
            projeler.Add(proje);
            _db.SaveChanges();

            return RedirectToAction("Index");

        }


            return View(proje);

    }
…您将看到项目的用户,因为自从
项目以来,他们被延迟加载。用户
属性被标记为
虚拟
。如果对
用户执行相同操作

var project = _db.Projects.Single(p => p.ID == 1);
var users = project.Users; // lazy loading because Users is virtual
…无法加载项目,因为
User.projects
属性未标记为
virtual

也可以将属性标记为
虚拟
,以便为
用户启用延迟加载。项目
集合:

var user = _db.Users.Single(u => u.ID == 1);
var projects = user.Projects; // no lazy loading because Projects is not virtual
public virtual ICollection<Project> Projects { get; set; }
var user = _db.Users.Include(u => u.Projects).Single(u => u.ID == 1);