gpt4 book ai didi

sql - Entity Framework 代码优先 : querying a view with no primary key

转载 作者:行者123 更新时间:2023-12-02 15:24:31 25 4
gpt4 key购买 nike

我们的客户已授予访问未定义主键的 View 的权限。我知道 Entity Framework 需要一个表的主键来识别。

但是对于没有主键的view还是可以查询的

我尝试查找,但 Entity Framework 总是给出错误提示:

Error: : EntityType 'ViewWeight' has no key defined. Define the key for this EntityType.

我知道键对于表很重要,但对于仅供阅读的 View ,是否有任何技巧或方法可以在不修改 View 本身的情况下读取值。

最佳答案

在 Entity Framework 中不可能有没有主键的实体。

尝试从 View 中获取可能的唯一键,组合列,...以创建唯一的主键。

如果不可能,则有一个解决方法,如果只是一个可查询的 View ,则不需要对检索到的值执行其他操作,例如删除或更新。修改 View 以添加 NEWID() ,它将为每一行生成一个唯一的 GUID ID,使用这个新列作为您实体的主键。

CREATE VIEW FooView AS
SELECT SELECT NEWID() AS ID,
COLUMN_A,
COLUMN_B
.....

问题是,如果您每次都重复相同的查询,您将获得同一行的不同 ID。

已更新

如果你不能不修改 View ,你可以使用带有原始 SQL 的实体,将原始 SQL 创建为

List<MyView> myViewItems = context.MyView.SqlQuery("SELECT NEWID() AS ID, MyView.* FROM MyView").ToList();

在你的模型中添加

public Guid ID { get; set; }

并将新属性配置为主键。

但是要小心,因为这种代码没有编译检查。

关于sql - Entity Framework 代码优先 : querying a view with no primary key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987474/

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