首先使用实体框架和代码,是否可以让它创建和使用没有主键的表?我不能让这套装置起作用:
public class Report
{
public virtual int ReportId
public virtual ICollection<ReportChanges> ReportChanges
}
public class ReportChanges
{
public virtual Report Report
public virtual string EditorName
public virtual DateTime Changed
}注意,我已经排除了在ReportChanges中分配主键。但是通过这种设置,我得到了:“无法推断实体类型‘ReportChanges’的键”。
要么我遗漏了什么,要么Code不支持没有主键的表。什么是正确的?谢谢。
发布于 2010-11-01 13:06:43
如果仍然有唯一标识行的方法,EF可以支持没有PI的表,但是如果没有正确的PK,它就无法推断唯一标识符。换句话说,向EF撒谎,说在Report和Changed上有一个PK,比如说。
发布于 2013-09-02 17:09:44
EF需要一种跟踪自己内部变化的方法。下面是一个代码示例,以帮助其他搜索过此内容的人:
public class YourDataContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ReportChanges>().HasKey(x => new {x.Report, x.Changed});
}
}"new {x.Report,x.Changed}“创建一个假的复合键,允许EF在内部唯一地指向一行。
https://stackoverflow.com/questions/4068920
复制相似问题