我正在使用实体框架映射一些表,但除非我声明一些列作为主键,否则我无法这样做。
这里的问题是,数据库中的表没有主键,并且有数百万行。我没有创建新Id列的权限。
[Table("MYTABLE")]
public class myTable
{
[Column("NUMX")]
public virtual string NumX { get; set; }
[Column("NAME")]
public virtual string Name { get; set; }
[Column("AGE")]
public virtual int AGE { get; set; }
}
Obs:如果我将[键]
属性添加到诸如年龄
之类的列,它会工作,但返回错误的数据。
有没有办法省略主键?
我解决了这个问题。复合键适合我:例如:在我的上下文中,我定义了一些键,不仅是一个键,还有三个键:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
**//Here is the secret**
modelBuilder.Entity<MyModel>().HasKey(x => new { x.NumX, x.Name,x.Age});
}
}
与SQL不同,实体框架需要主键。
EF使用主键来唯一标识行(例如,当您使用时。查找()
或执行更新操作)。
事实上没有主键,请记住SQLVIEW,您只能在其中读取数据。
请记住,在99%的情况下,您应该拥有主键,当您没有主键时,您应该停下来思考它是否有意义。
问题内容: 有谁知道如何在没有主键的情况下为表或视图进行hibernate映射? 问题答案: 不要认为Hibernate允许在没有主键的情况下映射表…考虑一下Hibernate如何在没有可以唯一标识行的列的情况下执行更新。 我猜想一种解决方法是对所有列使用复合键,但是最好添加主键。
TL;DR:将@webservlet(“/find-customers”)放在servlet(通过Tomcat 7部署)的开头并不是将servlet映射到host:port/webproject/find-customers中,即使servlet位于src文件夹中。
我只是在练习msdn中的代码第一个新数据库实体框架,我想知道是否可以在代码第一个新数据库EF中创建没有主键的表?
问题内容: 我已经制作了一个简单的Entity Framework ASP Core Application,它可以工作,但是我不知道为什么: 我做了这样的上下文: 我有两个表,像这样的模型: 有趣的是,当我运行我的应用程序时,它实际上可以拾取数据。似乎很奇怪,因为我没有指定任何表映射。我假设这只是自动映射,因为指定的表具有相同的名称。 我的问题是: 如果我不希望模型名称与数据库完全相同,该如何指
< sub >(我已经知道了答案,但是因为我经常发现自己在重新寻找答案,所以我把它贴在这里作为自己和他人的文档。这是Stackoverflow上鼓励的。) 许多 Servlet 开发人员都读过《Head First Serlet》一书 在Servlet 2.4及更低版本中,web.xml用于完全配置Web应用程序。但是更高版本似乎有其他方法来配置Web应用程序,无需触及web.xml和注释。例如,
在Hibernate继承映射中,JPA每类表策略, 根实体不需要表来映射, 子实体做,每个子实体都有一个表。 在我的理解中,实体是:带有映射配置的java类,它应该映射到一个表, 那么,如果没有要映射的表,根实体如何作为实体存在呢? 如果它不需要一个表来映射,我们为什么不用一个@mappedSuperclass呢? 我们可以使用此根实体进行查询吗?