[解決済み] タイプ間の関連付けの主要端を決定できない【重複】。
2022-02-17 13:16:02
質問
こんな状況です。
2つのタイプの
ElectricConsumer
すなわち
CommercialConsumers
国内消費者(Quaters)と1つの
Quater
が1つに割り当てられています。
Employee
.
以下は私のコードですが、例外に遭遇しています。
EFcodefirstDemo.CodeFistModel.Quater および EFcodefirstDemo.CodeFistModel.Quater のタイプ間の関連付けの主端を決定できない。 EFcodefirstDemo.CodeFistModel.Employee。この主端は のいずれかを使用して明示的に設定する必要があります。 リレーション・フルエント API あるいはデータ・アノテーションを使用します。
私はEFの初心者なので、どこかで間違いを犯しているのは分かっています。あなたがこの問題を解決することを願っています。
public class Employee
{
public Employee()
{
MeterReadings = new List<MeterReading>();
MeterReadings = new List<MeterReading>();
}
[Key]
[Column(Order = 1)]
public int EmployeeID { get; set; }
[Key]
[Column(Order = 2)]
public Int64 EmployeeNo { get; set; }
public String EmployeeName { get; set; }
[DefaultValue(true)]
public bool Gender { get; set; }
[DefaultValue(true)]
public bool HasResidence { get; set; }
public bool IsInDivision { get; set; }
public int? ManagerID { get; set; }
public virtual Employee Manager { get; set; }
public virtual Department Deparment { get; set; }
public int QuaterID { get; set; }
[ForeignKey("QuaterID")]
public virtual Quater Quater { get; set; }
public virtual ICollection<MeterReading> MeterReadings { get; set; }
}
public partial class ElectricConsumer
{
[Key]
public int ElectricConsumerID { get; set; }
public String Area { get; set; }
[MaxLength(350)]
public String Address { get; set; }
public virtual ICollection< Meter> Meters { get; set; }
}
public partial class Quater : ElectricConsumer
{
public Quater()
{
// Meters = new List<Meter>();
}
public int QuaterNo { get; set; }
public int QuaterPortionNo { get; set; }
public virtual Employee Employee { get; set; }
}
public partial class CommericalCustomer : ElectricConsumer
{
public CommericalCustomer()
{
// Meters = new List<Meter>();
}
public String Name { get; set; }
[Index("NicIndex", IsUnique = true)]
public Int64 NIC { get; set; }
public int ShopNo { get; set; }
}
public partial class Meter
{
public Meter()
{
InstalledDate = DateTime.Now;
MeterReadings = new List<MeterReading>();
ElectricBills = new List<ElectricBill>();
}
[Key]
[Column(Order = 1)]
public int MeterID { get; set; }
[Key]
[Column(Order = 2)]
public int MeterNo { get; set; }
[DefaultValue(1)]
public int Phase { get; set; }
public DateTime InstalledDate { get; set; }
[DefaultValue(true)]
public bool IsOperating { get; set; }
public virtual ElectricConsumer ElectricConsumer { get; set; }
public virtual ICollection<MeterReading> MeterReadings { get; set; }
public virtual ICollection<ElectricBill> ElectricBills { get; set; }
}
解決方法は?
この例外が発生するのは、あなたが
一対一の関係
を指定していないのですが
どの端
がリレーションシップの主体であることを示します。
プリンシパル
endは、最初に挿入されるもので、依存するものなしに存在することができます。
従属
エンドはプリンシパルに対する外部キーを持っているので、プリンシパルの後に挿入されなければなりません。この特定の問題を解決するには
Required
データアノテーション(おそらく
Quater
エンティティはこの場合、従属物である)。
public partial class Quater : ElectricConsumer
{
//...
[Required]
public virtual Employee Employee { get; set; }
}
関連
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み] エラー - IISメタベースにアクセスできません。
-
[解決済み】Entity frameworkの1:1リレーションシップにおけるアソシエーションの主端とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] 2つのリストを結合する
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】Entity frameworkの1:1リレーションシップにおけるアソシエーションの主端とは?