gpt4 book ai didi

entity-framework - 我不需要/想要 key !

转载 作者:行者123 更新时间:2023-12-01 04:11:08 25 4
gpt4 key购买 nike

我有一些想要使用 EF 4.1 进行查询的 View 。这些是特定的优化 View ,没有键可言;不会有任何删除、更新,只有好的 ol'e 选择。

但是 EF 想要在模型上设置一个键。有没有办法告诉EF继续前进,没有什么可担心的?

更多详情

这样做的主要目的是查询一组已按大小、查询参数和连接进行优化的 View 。底层表有它们的 PK、FK 等等。它被索引、统计(那个词?)和优化。

我想要一个像这样的类(这是我所拥有的一个更小更简单的版本......):

public MyObject //this is a view
{
Name{get;set}
Age{get;set;}
TotalPimples{get;set;}
}

和一个由 EF 4.1 CF 构建的存储库,我可以在其中
public List<MyObject> GetPimply(int numberOfPimples)
{
return db.MyObjects.Where(d=> d.TotalPimples > numberOfPimples).ToList();
}

我可以公开一个键,但是显示 2 或 3 列自然键的真正目的是什么?那永远不会用?

当前解决方案

看起来他们将不是 EF CF 解决方案,我已经向模型添加了一个复杂的 key ,并且我将它暴露在模型中。虽然这与人们期望“精心设计”的 db 模型看起来像“一致”,但在这种情况下,恕我直言,它只为模型构建器添加了更多逻辑,通过线路增加了更多字节,以及额外的属性一类。这些永远不会被使用。

最佳答案

不可能。 EF 要求记录的唯一标识 - 实体键。这并不意味着您必须公开任何其他列。您可以将所有当前属性(或任何子集)标记为键 - 这正是 EDMX 在将数据库 View 添加到模型时所做的 - 它遍历列并将所有不可为空和非计算列标记为主键.

您必须意识到一个问题 - EF internally uses identity map实体键是这个映射中的唯一标识(每个实体键只能与单个实体实例相关联)。这意味着如果您无法选择记录的唯一标识并且您加载具有相同标识(您定义的键)的多个记录,它们都将由单个实体实例表示。如果您不打算修改这些记录,不确定这是否会给您带来任何问题。

关于entity-framework - 我不需要/想要 key !,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com