【发布时间】:2016-06-24 09:52:57
【问题描述】:
我很难在连接到 sqlite 数据库的 Entity Framework core rc2-final 中使用 fluent API 生成正确过滤的 sql 查询。
我有以下简单实体:
public class Thing
{
[Required, Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string Name { get; set; }
}
我需要在数据库中查询我提供的图书存储列表中的所有图书。到目前为止,听起来很容易。我们可以这样写:
// 'GetShortListFromSomewhere' returns 2 items that ALREADY exist in db
List<Thing> externalList = GetShortListFromSomewhere();
var result = db.Things.Where(thing => externalList.Contains(o.Id)).ToList();
但是生成了以下查询,对于 sqlite,它是正确的,但不是 ..:
SELECT "o"."Id", "o"."Name" FROM "Thing" AS "o"
WHERE "o"."Id" IN ('7edbc016-abfa-4005-83d1-b39618b047df', '2def16bb-4203-417d-847c-7bdf053a00e8')
正如代码中所预期的那样,尽管 ID 完全有效,但这会返回 0 个项目。 Sqlite 上的 Guid 存储在 Blob 中,尽管 EF-Core 似乎可以很好地处理单项过滤器的过滤器,但在这种情况下似乎无法处理。
知道我需要它是一个 sql 操作,我怎样才能解决这个问题?
ps:我想要的最后一件事是让 EF Core 从 db 下载整个 Thing 集合,然后对其进行过滤!在我的情况下,这将是疯狂的。
【问题讨论】:
标签: c# sqlite entity-framework-core fluent