[英]ASP.Net MVC C# model with multiple instances of another model?
我正在尝试建立一个系统,使工程师能够提出请求,支持人员可以将请求分配给自己,这样,当有人尝试在网站上显示请求时,与创建请求的人的名字和分配请求的人的名字一起显示。
我的模特:
public class ConfigurationRequest
{
public virtual int RequestId { get; set; }
public virtual int UserId { get; set; }
public virtual int RequestNumber { get; set; }
public virtual string ReqDesc { get; set; }
}
public class User
{
public virtual int UserId { get; set; }
public virtual string UserRole {get; set; }
public virtual string UserName {get; set; }
public virtual ICollection(ConfigurationRequest) ConfigurationReuquest { get; set; }
}
对于每个配置请求,我想在浏览器中显示如下内容:
请求编号:2864965
募集人(所有者):Dave Johnson
目前分配给:Mike Clarke
需求描述:燃油平衡系统中需要的新点
当两次引用相同的类时,您将需要帮助实体框架找出如何匹配FK。 您可以使用注释或流利的代码。
public class ConfigurationRequest
{
public int RequestId { get; set; }
public int RequestNumber { get; set; }
public string ReqDesc { get; set; }
// EF will pair the below FK to nav by convention. You could also use ForeignKey attribute.
public int RequestingUserId { get; set; }
public User RequestingUser { get; set; }
public int AssignedUserId { get; set; } // make this int? if it is optional
public User AssignedUser { get; set; }
}
public class User
{
public int UserId { get; set; }
public string UserRole {get; set; }
public string UserName {get; set; }
// you need a collection for each relationship. InverseProperty tells EF how to match them to User FK
[InverseProperty("RequestingUser")]
public virtual ICollection<ConfigurationRequest> RequestsRaised { get; set; }
[InverseProperty("AssignedUser")]
public virtual ICollection<ConfigurationRequest> RequestsAssigned { get; set; }
}
或流利的等效语言:
modelBuilder.Entity<ConfigurationRequest>()
.HasRequired(c => c.RequestingUser) // or HasOptional()
.WithMany(p => p.RequestsRaised);
modelBuilder.Entity<ConfigurationRequest>()
.HasRequired(l => l.AssignedUser)
.WithMany(p => p.RequestsAssigned);
有关更多信息,请参见此处 。 另外,请勿在非导航属性上使用virtual
非延迟加载的属性。
现在,您可以在控制器中获取请求,使用它来填充视图模型并显示结果:
context.ConfigurationRequests
.Include(c => c.RequestingUser)
.Include(c => c.AssignedUser)
.FirstOrDefault(c => c.RequestId == myRequestId);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.