关于MVC3种IOC自写方法GetItems("Model名字")得到的Model为空的解决方法
2012-12-28 12:44
519 查看
在项目中的PostRepository中往往会写到方法GetItems("Model") Model为关联的实例对象名称 并且这个Model还是Post的一个属性
例如在对象Post中
public class Post
{
public int Id{get;set;}
public int AdminId{get;set;}
public Admin admin{get;set;}
}
PostRepository.GetItems("Admin")
如果在查询的结果中出现post有值,adminId有值 但是Admin为null
这是你可以查看一下方法GetItems
public IQueryable<TEntity> GetItems(params Expression<Func<TEntity, object>>[] paths)
{
var dbSet = _dbSet as IQueryable<TEntity>;
if (paths != null)
foreach (var path in paths)
dbSet = dbSet.Include(path);
return dbSet;
}
dbSet返回的值:
如果出现dbset的值为:
{SELECT
[Extent1].[ID] AS [ID],
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[AdminId] AS [AdminId],
[Extent1].[Title] AS [Title],
[Extent1].[Summary] AS [Summary],
[Extent1].[Alias] AS [Alias],
[Extent1].[Content] AS [Content],
[Extent1].[ArticleShare] AS [ArticleShare],
[Extent1].[ArticleVisit] AS [ArticleVisit],
[Extent1].[ArticleReship] AS [ArticleReship],
[Extent1].[CreateTime] AS [CreateTime],
[Extent1].[Level] AS [Level],
[Extent2].[AdminId] AS [AdminId1],
[Extent2].[UserName] AS [UserName],
[Extent2].[PassWord] AS [PassWord],
[Extent2].[Nike] AS [Nike],
[Extent2].[Email] AS [Email],
[Extent2].[HeadImage] AS [HeadImage]
FROM [dbo].[Posts] AS [Extent1]
INNER JOIN [dbo].[Admins] AS [Extent2] ON [Extent1].[AdminId] = [Extent2].[AdminId]}
需要注意一下红字的部分
如果不是,出现[extent1].[admin_adminId]=[Extent2].[AdminId]
这样的值 就是因为类:Admin中出现了 public List<Post> Posts{get;set;}
这个属性了
一般情况下如果是一对多的关系
在多种添加一的id和实体类属性就可以了
譬如:Post中出现:AdminId 和Admin这两个属性就可以了
不必要在
Admin中添加List<post>属性
嘿嘿!!!
例如在对象Post中
public class Post
{
public int Id{get;set;}
public int AdminId{get;set;}
public Admin admin{get;set;}
}
PostRepository.GetItems("Admin")
如果在查询的结果中出现post有值,adminId有值 但是Admin为null
这是你可以查看一下方法GetItems
public IQueryable<TEntity> GetItems(params Expression<Func<TEntity, object>>[] paths)
{
var dbSet = _dbSet as IQueryable<TEntity>;
if (paths != null)
foreach (var path in paths)
dbSet = dbSet.Include(path);
return dbSet;
}
dbSet返回的值:
如果出现dbset的值为:
{SELECT
[Extent1].[ID] AS [ID],
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[AdminId] AS [AdminId],
[Extent1].[Title] AS [Title],
[Extent1].[Summary] AS [Summary],
[Extent1].[Alias] AS [Alias],
[Extent1].[Content] AS [Content],
[Extent1].[ArticleShare] AS [ArticleShare],
[Extent1].[ArticleVisit] AS [ArticleVisit],
[Extent1].[ArticleReship] AS [ArticleReship],
[Extent1].[CreateTime] AS [CreateTime],
[Extent1].[Level] AS [Level],
[Extent2].[AdminId] AS [AdminId1],
[Extent2].[UserName] AS [UserName],
[Extent2].[PassWord] AS [PassWord],
[Extent2].[Nike] AS [Nike],
[Extent2].[Email] AS [Email],
[Extent2].[HeadImage] AS [HeadImage]
FROM [dbo].[Posts] AS [Extent1]
INNER JOIN [dbo].[Admins] AS [Extent2] ON [Extent1].[AdminId] = [Extent2].[AdminId]}
需要注意一下红字的部分
如果不是,出现[extent1].[admin_adminId]=[Extent2].[AdminId]
这样的值 就是因为类:Admin中出现了 public List<Post> Posts{get;set;}
这个属性了
一般情况下如果是一对多的关系
在多种添加一的id和实体类属性就可以了
譬如:Post中出现:AdminId 和Admin这两个属性就可以了
不必要在
Admin中添加List<post>属性
嘿嘿!!!
相关文章推荐
- The prefix "mvc" for element "mvc:annotation-driven" is not bound 的解决方法
- 关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
- 关于vs2010+QT Addin 创建类时弹出"Not a valid .h file"的解决方法
- 关于js调用ocx控件报错"对象不支持此属性或方法"的解决方法
- 关于在eclipse下android开发的错误:“Unable to resolve target 'android-18'"的解决方法
- 关于Android Studio "This version of android studio is incompatible with the gradle version used."的解决方法
- [转]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
- 关于将RadioButtonList的AutoPostBack属性设置为"True"获取子项时候引起回发的问题解决方法
- 关于"error LNK2019: unresolved external symbol _SipShowIM referenced in function "protected" 解决方法
- 【转】关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- css 关于"浮动边距加倍"及其解决方法-------解决方案是在这个div里面加上display:inline;
- 关于Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的解决方法
- 关于实体为Date类型的字段,如何用model.find(" date>? ",param)方法进行查询?
- The prefix "mvc" for element "mvc:annotation-driven" is not bound 的解决方法
- 关于s:iterator中"value" does not support runtime expressions的解决方法
- 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为
- 关于Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的解决方法
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法(转)
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法
- 学习:关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法(转)