C# 实体框架自动连接
我认为我的问题的标题不太准确,所以我将尝试解释我的问题是什么C# 实体框架自动连接,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我认为我的问题的标题不太准确,所以我将尝试解释我的问题是什么 我有两个模型:文章模型和用户模型 public class Article { public int ID { get; set; } [Required] public string Title { get; set; } [Required] [DataType(DataType.MultilineText)] public string Content { get; set; }
我有两个模型:文章模型和用户模型
public class Article
{
public int ID { get; set; }
[Required]
public string Title { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Content { get; set; }
[Required]
public User Author { get; set; }
public int Likes { get; set; }
}
public class User
{
public int ID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public ICollection<Article> MyArticles { get; set; }
}
我非常确定rails有这种可能性,我认为EF4.1也有这种可能性。如果您的模型是
用户的实例,那么您可以在视图中使用以下内容:
foreach(var article in Model.MyArticles) {
<p>article.Title</p>
<p>article.Content</p>
<p>article.Author.Name</p>
}
foreach(Model.MyArticles中的var文章){
第条.标题
第条.内容
文章作者姓名
}
首先加载用户和文章(如果使用延迟加载,可以跳过此步骤):
而不是在您的视图中传递用户列表:
foreach(var user in Model)
{
<h2>@user.name</h2>
foreach(var article in user.MyArticles) {
<p>@article.Title</p>
<p>@article.Content</p>
<p>@article.Author.Name</p>
}
}
foreach(模型中的var用户)
{
@用户名
foreach(user.MyArticles中的var article){
@文章标题
@文章内容
@文章.作者.姓名
}
}
我尝试了这一点,但它给了我这个错误\u CS1061:“System.Collections.Generic.IEnumerable”不包含“MyArticles”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型第一个参数的扩展方法“MyArticles”\u这是因为您需要将单个用户传递到视图中。否则,您需要迭代模型中的用户,并更改我的代码以使用外部循环中的该用户。我得到一个“已经有一个与此命令关联的打开的DataReader,必须先关闭。”错误。有什么想法吗?好吧,我知道了!我需要在连接字符串中设置MultipleActiveResultSets=true.:D
foreach(var article in Model.MyArticles) {
<p>article.Title</p>
<p>article.Content</p>
<p>article.Author.Name</p>
}
var users = context.Users
.Include(u => u.MyArticles)
.ToList();
foreach(var user in Model)
{
<h2>@user.name</h2>
foreach(var article in user.MyArticles) {
<p>@article.Title</p>
<p>@article.Content</p>
<p>@article.Author.Name</p>
}
}