【发布时间】:2020-08-16 05:39:38
【问题描述】:
如何查询和过滤由OwnsMany函数为其所有者配置的集合属性中的数据?
这是我尝试过的示例:
using (var context = new BloggingContext())
{
context.Database.OpenConnection();
context.Database.EnsureCreated();
context.Blogs.Add(sampleBlog);
context.SaveChanges();
var blog = context.Blogs.Single(b => b.BlogId == 1);
var goodPosts = context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Where(p => p.Title == "...")
.ToList();
}
和模型类:
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
和 dbContext 类:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().OwnsMany(x => x.Posts, post =>
{
post.ToTable("Posts");
post.HasKey("Id");
post.Property(x => x.Title);
post.Property(x => x.Content);
});
modelBuilder.Entity<Blog>()
.ToTable("Blogs");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connection = new SqliteConnection("Data Source=:memory:");
optionsBuilder.UseSqlite(connection);
}
}
我遇到了这个异常:
System.Reflection.TargetInvocationException: '调用的目标抛出了异常。'
内部异常:
ArgumentException:“System.Collections.Generic.List`1[Post]”类型的表达式不能用于返回类型“Post”
【问题讨论】:
标签: c# entity-framework orm entity-framework-core