C# 实体框架中的导航属性为空
我正在使用ASP.NETMVC构建一个简单的社交网络,我发现了一个问题。我对此非常陌生,因此这可能是一个简单的解决方案,但这里有: 我正在尝试设置一个系统,其中一个用户(C# 实体框架中的导航属性为空,c#,entity-framework,asp.net-identity,C#,Entity Framework,Asp.net Identity,我正在使用ASP.NETMVC构建一个简单的社交网络,我发现了一个问题。我对此非常陌生,因此这可能是一个简单的解决方案,但这里有: 我正在尝试设置一个系统,其中一个用户(ApplicationUser)可以向另一个用户发送好友请求,目前为止,好友请求正在数据库中与好友请求的发送者和接收者注册 以下是好友请求/好友的模型: public class Friend { public int Id { get; set; } public ApplicationUser User {
ApplicationUser
)可以向另一个用户发送好友请求,目前为止,好友请求正在数据库中与好友请求的发送者和接收者注册
以下是好友请求/好友的模型:
public class Friend
{
public int Id { get; set; }
public ApplicationUser User { get; set; }
public ApplicationUser UserFriend { get; set; }
public DateTime BecameFriends { get; set; }
public bool Status { get; set; }
}
问题是当我试图显示登录用户的好友请求活动时。我有一个ShowFriendRequest
操作,看起来像这样:
public ActionResult ShowFriendRequests(string Id)
{
//ADC is the ApplicationDataContext
var result = from f in ADC.Friends select f;
List<Friend> SearchResult = new List<Friend>();
SearchResult = result.Where(x =>
x.UserFriend.Id.Equals(Id)).ToList();
var model = new FriendViewModel
{
FriendList = SearchResult
//this is a List<Friend>
};
return PartialView(model);
}
System.Diagnostics.Debug.WriteLine(SearchResult[0].UserFriend.Id);
为什么从数据库中提取一个好友请求时,
ApplicationUser
实体为空?问题在下面一行:
var result = from f in ADC.Friends select f;
您既不是惰性加载
也不是急切加载
应用程序用户和朋友
。因此,请按如下方式编写结果查询:
var result = ADC.Friends.Include(f => f.ApplicationUser);
问题出现在以下行中:
var result = from f in ADC.Friends select f;
您既不是惰性加载
也不是急切加载
应用程序用户和朋友
。因此,请按如下方式编写结果查询:
var result = ADC.Friends.Include(f => f.ApplicationUser);
TanvirArjel的回答是正确的,如果您想执行这种查询,include是必需的 但是你可以重写所有的
var result = from f in ADC.Friends select f;
List<Friend> SearchResult = new List<Friend>();
//ADC is the ApplicationDataContext
SearchResult = result.Where(x => x.UserFriend.Id.Equals(Id)).ToList();
var model = new FriendViewModel
{
FriendList = SearchResult
//this is a List<Friend>
};
return PartialView(model);
var result=来自ADC中的f。朋友选择f;
列表搜索结果=新列表();
//ADC是ApplicationDataContext
SearchResult=result.Where(x=>x.UserFriend.Id.Equals(Id)).ToList();
var模型=新的FriendViewModel
{
FriendList=搜索结果
//这是一份清单
};
返回局部视图(模型);
对此
var SearchResult = ADC.AspNetUsers.Select(x=>x.Friend).ToList(); //Maybe you will have FriendNavigation if you don't find Friend relationship.. use intellisense in that case
var model = new FriendViewModel
{
FriendList = SearchResult
//this is a List<Friend>
};
return PartialView(model);
var SearchResult=ADC.AspNetUsers.Select(x=>x.Friend.ToList()//如果你找不到朋友关系,也许你会有FriendNavigation。。在这种情况下使用intellisense
var模型=新的FriendViewModel
{
FriendList=搜索结果
//这是一份清单
};
返回局部视图(模型);
TanvirArjel的答案是正确的,如果您想执行此类查询,则必须包含
但是你可以重写所有的
var result = from f in ADC.Friends select f;
List<Friend> SearchResult = new List<Friend>();
//ADC is the ApplicationDataContext
SearchResult = result.Where(x => x.UserFriend.Id.Equals(Id)).ToList();
var model = new FriendViewModel
{
FriendList = SearchResult
//this is a List<Friend>
};
return PartialView(model);
var result=来自ADC中的f。朋友选择f;
列表搜索结果=新列表();
//ADC是ApplicationDataContext
SearchResult=result.Where(x=>x.UserFriend.Id.Equals(Id)).ToList();
var模型=新的FriendViewModel
{
FriendList=搜索结果
//这是一份清单
};
返回局部视图(模型);
对此
var SearchResult = ADC.AspNetUsers.Select(x=>x.Friend).ToList(); //Maybe you will have FriendNavigation if you don't find Friend relationship.. use intellisense in that case
var model = new FriendViewModel
{
FriendList = SearchResult
//this is a List<Friend>
};
return PartialView(model);
var SearchResult=ADC.AspNetUsers.Select(x=>x.Friend.ToList()//如果你找不到朋友关系,也许你会有FriendNavigation。。在这种情况下使用intellisense
var模型=新的FriendViewModel
{
FriendList=搜索结果
//这是一份清单
};
返回局部视图(模型);