有什么办法可以通过.net驱动程序从cassandra数据库中忽略实体的列

时间:2019-06-23 16:26:26

标签: c# linq cassandra

我正在研究.net核心项目,并使用cassandra作为数据存储。 我需要忽略要存储在数据库中的列,我在EF和Mongo db中看到的是 IgnoreBson 属性,但是我无法使用linq用.net驱动程序找到Cassandra的解决方案。 我已经看到了Java驱动程序的解决方案,但没有.net驱动程序。 我正在关注Architecture of Playground / Preview app

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用MappingConfiguration定义实体如何映射到列。如果只需要包含特定的列,请使用选项ExplicitColumns

MappingConfiguration.Global.Define(
   new Map<User>()
      .TableName("users")
      .PartitionKey(u => u.UserId)
      .ExplicitColumns()
      .Column(u => u.UserId, cm => cm.WithName("id")));

https://docs.datastax.com/en/developer/csharp-driver/3.10/features/components/linq/#configuring-mappings

如果您使用的是基于属性的映射,则可以在ExplicitColumns上设置TableAttribute

[Table("users", ExplicitColumns = true)]
public class User
{
  // ...
}

如果您想使用实体中的大多数属性,而只忽略其中的少数几个属性,则也可以使用IgnoreAttribute

[Table("users")]
public class User
{
  // ...

  [Ignore]
  public string IgnoreMe { get; set; }
}

答案 1 :(得分:1)

在EF Core中非常简单。您有两个选项,数据注释或流畅的配置。

流利的配置使其更适合“实践”,因此,如果可能,我会倾向于这种做法。.以下是这两种方法的一些示例:https://docs.microsoft.com/en-us/ef/core/modeling/included-properties