在运行时为 linq2db 添加或删除列映射
Add or remove column mapping at runtime for linq2db
我有一个场景,如果部署了某些功能,那么一些表中将有许多列,否则不会存在,因此实体和列的映射不是静态的。我需要在运行时 add/remove 映射。有什么办法吗?
准备一个新的 MappingSchema
并传递给 DataConnection
构造函数。
假设您有以下 class:
[Table]
class SampleClass
{
[Column] public int Id { get; set; }
[Column] public int Value { get; set; }
}
要从完整对象具体化中删除列,请执行以下操作:
var ms = new MappingSchema();
ms.GetFluentMappingBuilder()
.Entity<SampleClass>().Property(e => e.Value).IsNotColumn();
// cache somewhere this schema
using (var db = new DataConnection(ms))
{
var result = db.GetTable<SampleClass>().ToArray();
}
记住,最好缓存这个新的 MappingSchema
并重复使用。否则你将永远不会命中缓存并且你会失去性能。
我有一个场景,如果部署了某些功能,那么一些表中将有许多列,否则不会存在,因此实体和列的映射不是静态的。我需要在运行时 add/remove 映射。有什么办法吗?
准备一个新的 MappingSchema
并传递给 DataConnection
构造函数。
假设您有以下 class:
[Table]
class SampleClass
{
[Column] public int Id { get; set; }
[Column] public int Value { get; set; }
}
要从完整对象具体化中删除列,请执行以下操作:
var ms = new MappingSchema();
ms.GetFluentMappingBuilder()
.Entity<SampleClass>().Property(e => e.Value).IsNotColumn();
// cache somewhere this schema
using (var db = new DataConnection(ms))
{
var result = db.GetTable<SampleClass>().ToArray();
}
记住,最好缓存这个新的 MappingSchema
并重复使用。否则你将永远不会命中缓存并且你会失去性能。