C# 实体框架-[Keyless]数据注释缺失

C# 实体框架-[Keyless]数据注释缺失,c#,entity-framework-core,data-annotations,C#,Entity Framework Core,Data Annotations,根据Microsoft文档,我应该可以访问[Keyless]的属性,这样我就可以定义我的模型具有Keyless,这样在我的DBContext中我就可以有如下内容: public DbSet<MyKeylessClass> KeylessModel { get; set; } public DbSet KeylessModel{get;set;} 并使用\u context.KeylessModel.FromSqlRaw(…),而无需向其添加PK。 我参考了System.Compo

根据Microsoft文档,我应该可以访问[Keyless]的属性,这样我就可以定义我的模型具有Keyless,这样在我的DBContext中我就可以有如下内容:

public DbSet<MyKeylessClass> KeylessModel { get; set; }
public DbSet KeylessModel{get;set;}
并使用
\u context.KeylessModel.FromSqlRaw(…)
,而无需向其添加PK。
我参考了
System.ComponentModel.DataAnnotations
和除无键外的所有属性,我在这里遗漏了什么?

好吧,官方的EF Core 3.0发行文档没有提到支持该属性,而是指示使用HasNoKey()方法的无键类型:

ModelBuilder.Entity().HasNoKey()

您可以阅读更多

您可能错过了链接文档主题开头的注释的以下部分

[Keyless]
数据注释在EFCore 5.0中可用

“变成”?“在EFCore 5.0中”?拜托,现在没有EFCore 5.0


无论如何,看起来他们是在主动记录未来的事情,所以只要注意,当某些东西丢失或与记录的内容不同时。

它现在就在那里,如果您有ef 5.x,但它不在常规数据注释命名空间下,请尝试以下方法:
[Microsoft.EntityFrameworkCore.Keyless]

我知道这种方法,是的,如果有人想知道,它是有效的,我的怀疑是关于属性的,我阅读了它,并对EF github中的问题进行了更深入的研究,发现了与您所说的类似的东西,但公平地说,这是在新功能发布的早期,这也是相对较新的,但我预计,由于它被记录在案,它已经实现,我不会仅仅为此标记为正确的anwser,但是如果没有解决方案,我会检查它。别担心,谢谢你的支持time@RicardoDiasMorais我明白你说的,我自己找不到这个属性,因为我从来没有用过它,但是请注意,您所指的文档看起来是针对EF2.1的,当查询类型是推荐的方法时,现在它们被弃用而支持DbSet,就像在2.1之前一样:)。是的,文档建议有一个稳定的5.0版本。到目前为止,只有一个真正的格特。如果你问我的话,这些文档都是乱七八糟的-以前版本的文档丢失了(因此断开了链接或显示了不同的内容),当前版本的一些东西丢失了,现在指的是未来(未发布)的东西。甚至根页面也已更改,所以现在“实体框架”指的是EF核心,EF6在“以前的版本”下。等等:-(这就是市场营销插手蛋糕时发生的情况:)他们比我更喜欢EF core。@IvanStoevo这是你在这里说的正确答案:-现在“实体框架”指的是EF core,EF6在“以前的版本”下,所以我将其标记为CA@E-很抱歉延迟回复,但我不同意你的说法。简单地说,我的问题是“如果我有正确的引用,为什么缺少无键属性”,我知道其他可能的解决方案,比如你给出的解决方案,我甚至在评论中指出。这个答案很好地解释了为什么会发生这种情况,而你的答案也没有错,两者都很简单,信息丰富。
ModelBuilder.Entity<MyKeylessClass>().HasNoKey()