如何使用EF7 Fluent API为单个POCO创建两个表?

rtf_leg

我想单个实体类型创建两个表是相似的,除了第二个可以遗漏一些外键(顺便说一句,在该问题的上下文中不是很重要)。

第一个表将以常见方式使用(选择查询,少量插入查询等)。

第二个表是临时表,将用于批量插入操作(即,首先,我使用SqlBulkCopy以便将数据插入到临时表中,然后,我使用MERGE查询将项向上插入到第一个表中)。这种方法使我可以非常快速地增加数千条记录。

那么,强制EF7为同一实体创建两个相同表的最佳方法是什么?

我发现了一个类似的问题:首先在EF Code中对两个相同的表使用相同的类型,但是似乎那个家伙(一个问这个问题的人)想要具有相同实体的多个DbSet。我的情况没什么不同-我只想自动化表创建,仅此而已。

rtf_leg

好的,看来我可以自己回答这个问题了。

因此,实际上我有一个丑陋的解决方案:使用简单继承,我可以创建相同的实体,该实体可用于在同一DbContext中创建另一个DbSet。

另外,为了避免参与EF继承策略,我需要将基本类型保持未映射状态(即,在数据库架构中不需要任何与继承相关的更改)。这项要求迫使我创建基类(将不进行映射)和两个继承者(一个用于主表DbSet,另一个用于临时表DbSet)。

这种方法使我避免了相同类型的问题,更重要的是,使我能够保持表模式完全相同而没有任何问题。

例子:

/// <summary>
/// Base entity, not used by EF at all - intended to define properties only.
/// </summary>
public class MyEntityBase
{
    public int Id { get; set; }
    public string Name { get; set; }
}

/// <summary>
/// That entity used to create primary table and used by app logic.
/// </summary>
public class MyEntity : MyEntityBase
{
}

/// <summary>
/// That entity used to create temp table only.
/// </summary>
public class MyTempEntity : MyEntityBase
{
}

/// <summary>
/// Here is our DB context with two DbSets...
/// </summary>
public class MyDbContext : DbContext
{
    /// <summary>
    /// That DbSet should be used by app logic.
    /// </summary>
    public DbSet<MyEntity> MyEntities { get; set; }

    /// <summary>
    /// That DbSet will force EF to create temp table.
    /// App logic shouldn't interact with it in common way 
    /// (only SqlBulkCopy and some hand-written queries) 
    /// so it is not public.
    /// </summary>
    protected DbSet<MyTempEntity> MyTempEntities { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用EF 6.1 Fluent API创建空间索引

来自分类Dev

使用Fluent API

来自分类Dev

使用Fluent API的EF外键

来自分类Dev

使用Fluent API的EF外键

来自分类Dev

使用Fluent Api更改表名称标识

来自分类Dev

使用EF Fluent API映射我的实体关系时,我是否需要同时映射涉及的两个实体?

来自分类Dev

在EF Core中,如何使用Fluent API为引用拥有的类型配置外键

来自分类Dev

如何使用EF6 Fluent API for MySQL指定表类型?

来自分类Dev

如何在EF7(Core)中为同一表创建多个关系?

来自分类Dev

使用现有Db进行EF Fluent api poco基因的提取和作图

来自分类Dev

如何使用EF 6 Fluent Api添加复合唯一键?

来自分类Dev

C#Fluent API:如何构造

来自分类Dev

使用Fluent API进行级联删除

来自分类Dev

使用Fluent API指定索引填充因子?

来自分类Dev

使用 fluent API 跟踪异步 Azure 操作

来自分类Dev

如果使用Fluent断言顺序不同,如何断言两个列表是不等效的

来自分类Dev

如何使用Fluent NHibernate覆盖单个LINQ查询的延迟加载

来自分类Dev

使用 azure management fluent library 为 webapp 创建 cors 条目

来自分类Dev

如何使用Entity Framework 7通过fluent API指定外键列名称?

来自分类Dev

在实体框架中使用Fluent API创建多对多关系

来自分类Dev

在实体框架中使用Fluent API创建多对多关系

来自分类Dev

使用 Fluent API 的 EF 6 Code First 关系。如何设置第一个和第三个表之间的关系或获取分组集合

来自分类Dev

EF6:创建存储过程。使用Fluent API还是DBMigrations?

来自分类Dev

如何使用 Azure Management Fluent API 进行身份验证

来自分类Dev

在EF7中为谓词使用参数时,为什么不能使用ToListAsync()?

来自分类Dev

在EF 6 Fluent API中从CRUD读取地图

来自分类Dev

EF Code First Fluent API-级联删除

来自分类Dev

EF Code First Fluent API,指定外键属性

来自分类Dev

Map Read from CRUD in EF 6 Fluent API

Related 相关文章

  1. 1

    如何使用EF 6.1 Fluent API创建空间索引

  2. 2

    使用Fluent API

  3. 3

    使用Fluent API的EF外键

  4. 4

    使用Fluent API的EF外键

  5. 5

    使用Fluent Api更改表名称标识

  6. 6

    使用EF Fluent API映射我的实体关系时,我是否需要同时映射涉及的两个实体?

  7. 7

    在EF Core中,如何使用Fluent API为引用拥有的类型配置外键

  8. 8

    如何使用EF6 Fluent API for MySQL指定表类型?

  9. 9

    如何在EF7(Core)中为同一表创建多个关系?

  10. 10

    使用现有Db进行EF Fluent api poco基因的提取和作图

  11. 11

    如何使用EF 6 Fluent Api添加复合唯一键?

  12. 12

    C#Fluent API:如何构造

  13. 13

    使用Fluent API进行级联删除

  14. 14

    使用Fluent API指定索引填充因子?

  15. 15

    使用 fluent API 跟踪异步 Azure 操作

  16. 16

    如果使用Fluent断言顺序不同,如何断言两个列表是不等效的

  17. 17

    如何使用Fluent NHibernate覆盖单个LINQ查询的延迟加载

  18. 18

    使用 azure management fluent library 为 webapp 创建 cors 条目

  19. 19

    如何使用Entity Framework 7通过fluent API指定外键列名称?

  20. 20

    在实体框架中使用Fluent API创建多对多关系

  21. 21

    在实体框架中使用Fluent API创建多对多关系

  22. 22

    使用 Fluent API 的 EF 6 Code First 关系。如何设置第一个和第三个表之间的关系或获取分组集合

  23. 23

    EF6:创建存储过程。使用Fluent API还是DBMigrations?

  24. 24

    如何使用 Azure Management Fluent API 进行身份验证

  25. 25

    在EF7中为谓词使用参数时,为什么不能使用ToListAsync()?

  26. 26

    在EF 6 Fluent API中从CRUD读取地图

  27. 27

    EF Code First Fluent API-级联删除

  28. 28

    EF Code First Fluent API,指定外键属性

  29. 29

    Map Read from CRUD in EF 6 Fluent API

热门标签

归档