我可以通过实体拆分在Entity Framework 6中延迟加载实体的一部分吗?

保罗·T·戴维斯

我对Entity Framework还是很陌生,尽管它比NHibernate具有许多优点,但令我失望的是它不支持延迟加载属性。

参加本课:

public class Product
{ 
    public virtual Guid Id {get;set;}
    public virtual string Name {get;set;}
    public virtual string Details {get;set;}
}

我的计划是使用实体拆分将其映射到两个表:

CREATE TABLE [dbo].[Product](
[Id] [uniqueidentifier] NOT NULL PRIMARY KEY,
[Name] [nvarchar](50) NULL
) 

CREATE TABLE [dbo].[ProductDetails](
[Id] [uniqueidentifier] NOT NULL PRIMARY KEY,
[Details] [nvarchar](max) NULL
)

这是我的流利映射:

modelBuilder.Entity<Product>()
            .Map(m =>
            {
                m.Properties(t => new { t.Id, t.Name });
                m.ToTable("Product");
            })
            .Map(m =>
            {
                m.Properties(t => new { t.Id, t.Details});
                m.ToTable("ProductDetails");
            });

我希望能够显示产品列表而不加载详细信息字段。但是,每当我加载产品时,它总是会进行INNER JOIN。我希望它仅从Product中读取,但在读取Details属性时再从ProductDetails中读取。

如何做到这一点?

如果不可能,我该如何实现属性的延迟加载?

表拆分是不可接受的,因为这意味着持久性机制决定了域的设计。

根据CodeCaster的答案进行编辑:

域是固定的-我不需要引入ProductDetails实体的解决方案。这个问题是关于持久化现有域模型的。更改域不能回答问题。

CodeCaster

如何实现[从拆分表中延迟加载标量属性]?

如果不可能,我该如何实现属性的延迟加载?

不能,延迟加载仅适用于导航属性

如果您像这样更改模型:

public class Product
{ 
    public virtual Guid Id {get;set;}
    public virtual string Name {get;set;}

    public virtual ProductDetails Details {get;set;}
}

public class ProductDetails
{ 
    public virtual Guid Product_Id {get;set;}
    public virtual string Details {get;set;}
}

您可以利用延迟加载,ProductDetails只有在获取Product.Details属性时才会在其中进行查询

[这是否意味着持久性机制决定了域的设计?

实体模型不必是域模型。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

webforms中的数据控件是Entity Framework的一部分吗?

来自分类Dev

将鉴别符列添加为Entity Framework中唯一索引的一部分

来自分类Dev

将数据插入表中作为主键外键的一部分-Entity Framework

来自分类Dev

实体框架渴望仅加载其他表的一部分

来自分类Dev

单词拆分是POSIX的一部分吗?

来自分类Dev

如何将对象模型的一部分映射到Entity Framework和SQL Server中的XML列?

来自分类Dev

如何将对象模型的一部分映射到Entity Framework和SQL Server中的XML列?

来自分类Dev

我可以从外部文件中仅导入一部分html吗?

来自分类Dev

我是僵尸网络的一部分吗?

来自分类Dev

我可以使用无键实体类型在Entity Framework Core中查询CHANGETABLE吗?

来自分类Dev

在Mef中,从属程序集的一部分可以为空吗?

来自分类Dev

ffmpeg可以从被分割的视频的一部分中捕获帧吗?

来自分类Dev

Yii2中有什么方法可以动态更改URL而无需重新加载吗?来自pjax的一部分

来自分类Dev

实体类型[NAME]不是当前上下文模型的一部分。在Release中编译时

来自分类Dev

作为另一实体主键一部分的组合主键

来自分类Dev

是否可以延迟对作为函数调用一部分的表达式的求值?

来自分类Dev

我可以在Python的JSON密钥中替换字符串的一部分吗?

来自分类Dev

我可以使用XCTest测试应用程序中某一部分的性能吗?

来自分类Dev

我可以破解 Rails 服务器中 HTML 页面的一部分吗

来自分类Dev

实体类型ApplicationUser不是当前上下文模型的一部分

来自分类常见问题

实体类型<type>不是当前上下文模型的一部分

来自分类Dev

实体类型IdentityUser不是当前上下文模型的一部分

来自分类Dev

实体类型<T>不是当前上下文模型的一部分

来自分类Dev

实体类型[class]不是当前上下文模型的一部分

来自分类Dev

属性“名称”是对象键信息的一部分,无法修改。实体框架

来自分类Dev

选择性继承实体的一部分

来自分类Dev

如何在JPA(而非JPQL)中选择实体的一部分?

来自分类Dev

实体类型[class]不是当前上下文模型的一部分

来自分类Dev

除非是HTML实体的一部分,否则在分号周围添加空格

Related 相关文章

  1. 1

    webforms中的数据控件是Entity Framework的一部分吗?

  2. 2

    将鉴别符列添加为Entity Framework中唯一索引的一部分

  3. 3

    将数据插入表中作为主键外键的一部分-Entity Framework

  4. 4

    实体框架渴望仅加载其他表的一部分

  5. 5

    单词拆分是POSIX的一部分吗?

  6. 6

    如何将对象模型的一部分映射到Entity Framework和SQL Server中的XML列?

  7. 7

    如何将对象模型的一部分映射到Entity Framework和SQL Server中的XML列?

  8. 8

    我可以从外部文件中仅导入一部分html吗?

  9. 9

    我是僵尸网络的一部分吗?

  10. 10

    我可以使用无键实体类型在Entity Framework Core中查询CHANGETABLE吗?

  11. 11

    在Mef中,从属程序集的一部分可以为空吗?

  12. 12

    ffmpeg可以从被分割的视频的一部分中捕获帧吗?

  13. 13

    Yii2中有什么方法可以动态更改URL而无需重新加载吗?来自pjax的一部分

  14. 14

    实体类型[NAME]不是当前上下文模型的一部分。在Release中编译时

  15. 15

    作为另一实体主键一部分的组合主键

  16. 16

    是否可以延迟对作为函数调用一部分的表达式的求值?

  17. 17

    我可以在Python的JSON密钥中替换字符串的一部分吗?

  18. 18

    我可以使用XCTest测试应用程序中某一部分的性能吗?

  19. 19

    我可以破解 Rails 服务器中 HTML 页面的一部分吗

  20. 20

    实体类型ApplicationUser不是当前上下文模型的一部分

  21. 21

    实体类型<type>不是当前上下文模型的一部分

  22. 22

    实体类型IdentityUser不是当前上下文模型的一部分

  23. 23

    实体类型<T>不是当前上下文模型的一部分

  24. 24

    实体类型[class]不是当前上下文模型的一部分

  25. 25

    属性“名称”是对象键信息的一部分,无法修改。实体框架

  26. 26

    选择性继承实体的一部分

  27. 27

    如何在JPA(而非JPQL)中选择实体的一部分?

  28. 28

    实体类型[class]不是当前上下文模型的一部分

  29. 29

    除非是HTML实体的一部分,否则在分号周围添加空格

热门标签

归档