0
所以我改變了我的數據庫,並重新編寫它們。我遵循EF6教程,但在嘗試創建帶有視圖的控制器時遇到此錯誤。我對錯誤進行了一些研究,人們說要添加數據註釋,我嘗試了[密鑰],但我一直得到相同的錯誤。不知道我是否忘記了什麼?謝謝!AspNet EF6 - 實體類型沒有定義密鑰
「運行選定代碼生成器時出錯:'無法檢索'LinkDB.Models.Identifier'的元數據。無法確定類型'LinkDB.Models.Identifier'和'LinkDB.Models.Identity'之間關聯的主要端點,此關聯的主要端點必須使用關係流暢API或數據註釋進行明確配置。
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>();
}
}
}
@kirk剛剛加入它,謝謝! – liamcook
你並不真正需要的[關鍵]我如果你遵循你所做的調用你的關鍵「ID」或「Class + ID」的約定。問題在於別處。是'公共虛擬身份標識{行;組; }在Identity class中是正確的(自引用)還是你打算將它作爲Identifier(與IdentifierId自動配對)FK? –
@SteveGreene我也這麼認爲,原來我把它作爲自己的關鍵,所以MetricID和IdentityID。授予我的數據庫沒有很好地命名,這是我第一次將它們映射!但是我打算爲每個數據庫添加一個identifierID,這樣每個數據庫的數據就可以整理出來,如果這樣做有道理的話?問題的其他地方還有哪些,我已經完成了整個構建過程!謝謝 – liamcook