データベースを変更して再作成しました。私はEF6チュートリアルに従いましたが、ビューを持つコントローラを作成しようとしているときにこのエラーが発生しました。私はそのエラーに関するいくつかの調査を行い、人々はデータ注釈を追加すると言って、[Key]を試みましたが、私は同じエラーが発生し続けます。私は何かを忘れてしまったかどうか分からない?ありがとう!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>();
}
}
}
! – liamcook
あなたは本当に[キー]私を必要としませんあなたがしているあなたのキー 'ID'や 'クラス+ ID 'を呼び出すという慣習に従います。問題は他のところにある。行は 'public virtual Identity Identity {get;}ですか?セット; } '(IdentifierIdと自動的にペアになっています)FK? –
@SteveGreene私はそれも独自の鍵としてMetricIDとIdentityIDを持っていたと思っていました。私のデータベースには名前がつけられていないことが認められました。しかし、各データベースにidentifierIDを追加して、各データベースのデータを照合することができます。他にどこに問題があるのだろうか?私は全体のビルドを行った!感謝 – liamcook