docModel.Property( d= d.Tags).HasConversion( t= ToJson(t),t= FromJsonList string(t));结果文件看起来是这样的: { "tags": "[\"one\ ", \"two\ ", \"three\ "]" } 在EF Core 6.0中 , 我只是删除...
Raw SQL
一个很常见的请求是允许开发人员为数据访问编写自己的SQL 。 这正是我处理代码迁移所需要的特性 。 要使Raw SQL工作 , 它必须投射到一个现有的模型 。 它是实体的DbSet<T>的扩展 。 在我的例子中 , 它支持就地迁移 。 在更新代码之后 , 尝试加载文档将会失败 。 文档只有一个字符串属性用于“tag” , 但c#模型是一个数组 , 因此JSON序列化会抛出一个异常 。 为了解决这个问题 , 我使用了Azure Cosmos DB的一个内置特性 , 它将 字符串解析为数组 。 使用查询 , 我将实体投影到匹配当前schema的文档中 , 然后将其保存回来 。 这是迁移代码:
- 字符串解析为数组: https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-stringtoarray
除了我已经介绍过的内容之外 , 这些增强功能也包含在其中 。
- 对于多对多关系 , EF Core现在 隐式地在连接类型上使用分区键。
- 您可以在实例、类型和集合级别为 文档配置生存时间(TTL)。
- 您可以 配置容器特性, 如吞吐量、大小等 通过EF Core APIs 。
- 我们现在记录特定于Cosmos DB的 诊断事件, 包括查询成本 。
- 我们在查询中添加了对DISTINCT操作符的 支持。
- LINQ provider现在将某些方法(如字符串操作和数学操作)转换为它们的原生Cosmos DB 对应方法。
- 隐式地在连接类型上使用分区键: https://github.com/dotnet/efcore/issues/23491
- 文档配置生存时间(TTL): https://github.com/dotnet/efcore/issues/17307
- 配置容器特性: https://github.com/dotnet/efcore/issues/17301
- 诊断事件: https://github.com/dotnet/efcore/issues/17298
- 支持: https://github.com/dotnet/efcore/issues/16144
- 对应方法: https://github.com/dotnet/efcore/issues/16143
文章图片
文章图片
我对即将到来的变化感到兴奋 , 希望你们也一样 。 你正在使用Cosmos DB provider吗? 如果还没有 , 在我们添加了以上功能之后你愿意使用吗? 或者还有更多需求和建议 , 请在本文下面留言 , 谢谢!
开始使用EF Core和Azure Cosmos DB
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
