最近在学习DotNetCore并做一个自己的小项目,分为了多个数据库,AccountDbContext和BlogDbContext,

发blog的时候需要用到Account的信息,但是再Blog中只记录了UserID,然后用到了如下代码:

var q = from u in this.DbAccount.Users
join p in this.DbBlog.Posts
on u.UserID equals p.UserID
select u;
var v = q.FirstOrDefault();

但是目前来说貌似不支持,通过各种搜索,倒是有一个改xml的方案,但是我的项目的DbContext是手写而不是使用SqlMetal工具生成的。报错部分信息如下

"Microsoft.EntityFrame
workCore.Query","queryModel":"(from User u in DbSet<User> join Post p in DbSet<Post> on [u].UserID equals [p].UserID select [u]).F..."}}}}
'q.FirstOrDefault()' threw an exception of type 'System.ArgumentNullException'
Data: {System.Collections.ListDictionaryInternal}
HResult: -2147467261
HelpLink: null
InnerException: null
Message: "Value cannot be null.\r\nParameter name: entityType"
ParamName: "entityType"
Source: "Microsoft.EntityFrameworkCore.Relational"
StackTrace: " at Microsoft.EntityFrameworkCore.Utilities.Check.NotNull[T](T value, String parameterName)\r\n at Microsoft.EntityFrameworkCore.RelationalMetadataExtensions.Relational(IEntityType entityType)\r\n at Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.RelationalEntityQueryableExpressionVisitor.VisitEntityQueryable(Type elementType)

但是在同一个server上夸数据库的查询再sqlserver和mysql都是支持的。也就是说EFCore 2.0现在不支持,现在临时的解决方案如下,


var userID = this.User.GetUserID(); var queryUsers = from u in this.DbAccount.Users.Include(a => a.Account)
where u.UserID == userID
select new
{
UserID = u.UserID,
UserNickName = u.NickName
};
var queryPosts = from p in this.DbBlog.Posts.Include(a => a.Tags)
join pc in this.DbBlog.PostContents
on p.PostID equals pc.PostID
orderby pc.CreateAt descending
where p.UserID == userID
select new
{
PostID = p.PostID,
UserID = p.UserID,
Title = p.Title,
URL = p.URL,
Summary = p.Summary,
Tags = p.Tags,
EditorType = pc.EditorType,
MD5Hash = pc.MD5Hash,
Content = pc.Content,
ContentCreateAt = pc.CreateAt
}; var queryPo = from u in queryUsers.ToList()
join p in queryPosts.ToList()
on u.UserID equals p.UserID
orderby p.ContentCreateAt
select new
{
UserNickName = u.UserNickName,
Title = p.Title
}; var pa = queryPo.ToList();

测试通过,但是要麻烦多了,就看EFCore什么时候能原生支持了。

最新文章

  1. javascript DOM操作
  2. 1.【转】spring MVC入门示例(hello world demo)
  3. U3D外包、Unreal4外包、VR外包就找北京动点飞扬软件
  4. [stm32] 中断
  5. lucene入门
  6. ytu 1910:字符统计(水题)
  7. sysfs接口整理
  8. Android程序检测网络是否可用
  9. ps入门教程:选择工具、移动工具、索套工具的使用
  10. 《Django By Example》第十一章 中文 翻译 (个人学习,渣翻)
  11. 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
  12. Linux探索之路1---CentOS入坑笔记整理
  13. proxy ubunta
  14. Session知识点
  15. 2018-2019-1 20189210 《LInux内核原理与分析》第九周作业
  16. SourceInsight宏插件2(非常好用,强力推荐)
  17. JavaScript 数组(Array)方法汇总
  18. Win10系列:C#应用控件基础21
  19. html5-select和datalist元素
  20. [UE4]蓝图比C++慢10倍,是吗?

热门文章

  1. 洛谷P1396 营救
  2. Java Socket UDP编程
  3. 「Python」python绘制图表
  4. [DeeplearningAI笔记]序列模型3.6Bleu得分/机器翻译得分指标
  5. 2-sat 分类讨论 UVALIVE 3713
  6. 关于变长数组的一点小想法-C语言定义数组但是数组长度不确定怎么办
  7. docker使用host模式启动nginx
  8. windows上使用wordpress搭建博客
  9. [转]FILE的用法
  10. 【BZOJ】4358: permu 莫队算法