所以我改变了我的数据库并重新制作它们。我按照EF6教程,但在尝试创建带视图的控制器时遇到此错误。我做了一些关于错误的研究,人们说要添加数据注释,我试过[Key]但是我一直得到同样的错误。不确定我是否忘记了什么?谢谢!
“运行所选代码生成器时出错:'无法检索'LinkDB.Models.Identifier'的元数据。无法确定类型“LinkDB.Models.Identifier”和“LinkDB.Models.Identity”之间关联的主要结尾。此关联的主要结尾必须使用关系流畅API或数据注释进行明确配置。 / p>
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace LinksDB.Models
{
public class Identity
{
[Key]
public int ID { get; set; }
public int IdentifierID { get; set; }
public string contact { get; set; }
public string contactname { get; set; }
public string price { get; set; }
public virtual ICollection<Link> Links { get; set; }
public virtual Identifier Identifiers { get; set; }
public virtual Metric Metrics { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace LinksDB.Models
{
public class Identifier
{
[Key]
public int ID { get; set; }
public string domain { get; set; }
public virtual ICollection<Link> Links { get; set; }
public virtual Identity Identitys { get; set; }
public virtual Metric Metrics { get; set; }
}
}
using LinksDB.Models;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace LinksDB.DAL
{
public class LinkData : DbContext
{
public LinkData() : base("LinkData")
{
}
public DbSet<Identifier> Identifiers { get; set; }
public DbSet<Identity> Identitys { get; set; }
public DbSet<Link> Links { get; set; }
public DbSet<Metric> Metrics { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
答案 0 :(得分:0)
好的,如果你想在Identity和Identifier之间建立1:1的关系,那么这些模型应该如下所示,其中子(Indentifier)使用IdentityId作为它的PK和FK。您也可以使用流畅的代码执行此操作。从这开始,然后添加度量和链接关系。
public class Identity
{
[Key]
public int ID { get; set; }
public string contact { get; set; }
public string contactname { get; set; }
public string price { get; set; }
public virtual Identifier Identifier { get; set; }
}
public class Identifier
{
[Key, ForeignKey("Identity")]
public int IdentityID { get; set; }
public string domain { get; set; }
public virtual Identity Identity { get; set; }
}
示例here